帖子
帖子
用户
博客
课程
显示全部楼层
24
帖子
0
勋章
220
Y币

[云开发] 本地真机测试或者打包安装的和页面上云编译偏差很大?

[复制链接]
发表于 2015-6-27 17:00:03
本帖最后由 蔚蓝海域 于 2015-6-27 17:03 编辑

一个APICLOUD项目,在本地的真机测试的时候,诸如融云、极光推送的都无法初始化成功,通过alert信息能够看到是api.require()对应的模块的时候就没有成功,已经按照开发文档上面说明的进行了初始化设置,融云有在config.xml上面添加
  1. <feature name="rongCloud"><div>    <param name="appKey" value="*************"/></div><div>  </feature></div>
复制代码

然后在需要使用的地方,写如下代码var rong = api.require('rongCloud');
  1. alert("rong"+rong+" : "+JSON.stringify(rong));
  2. rong.init(function(ret, err) {
  3.         if (ret.status == 'error'){
  4.                 api.toast({ msg: err.code });
  5.         }
  6. });
复制代码

结果是rong:undefind
在云编译底下变成了rong:[]
难道融云的模块必须云编译才能使用?

==========================
然后我又发现一个更坑的问题,聊天用的chatbox()模块,初始化写法如下:
  1. var addButtonAry = new Array();
  2.                         for (var i = 0; i < 2; i++) {
  3.                                 addButtonAry[0] = {
  4.                                         normal : "widget://image/chatBox_album1.png",
  5.                                         title : "相册"
  6.                                 };
  7.                                 addButtonAry[1] = {
  8.                                         normal : "widget://image/chatBox_album1.png",
  9.                                         title : "拍照"
  10.                                 };
  11.                         }
  12.                         var sourcePath = "widget://image/emotion";
  13.                         //存储表情信息
  14.                         var emotionData;
  15.                         getImgsPaths(sourcePath, function(emotion) {
  16.                                 emotionData = emotion;
  17.                         });
  18.                         var obj = api.require('chatBox');
  19.                         obj.open({
  20.                                 switchButton : {
  21.                                         faceNormal : "widget://image/chatBox_face1.png",
  22.                                         faceHighlight : "widget://image/chatBox_face2.png",
  23.                                         addNormal : "widget://image/chatBox_add1.png",
  24.                                         addHighlight : "widget://image/chatBox_add2.png",
  25.                                         keyboardNormal : "widget://image/chatBox_key1.png",
  26.                                         keyboardHighlight : "widget://image/chatBox_key2.png",
  27.                                 },
  28.                                 sourcePath : sourcePath,
  29.                                 addButtons : addButtonAry
  30.                         }, function(ret, err) {/*此处省略一万字....*/});
  31. obj.setInputFieldListener(function(ret, err) {
  32.                                 var height = ret.chatViewH + 30;
  33.                                 $(".chatting").css("padding-bottom", height);
  34.                                 scroll(2);
  35.                         });
复制代码


然后我在本地测试的时候,是很正常的,一点问题没有,但是云编译以后这个chatbox居然消失不见了????WTF……
还有很多其他模块有的存在,有的消失,我都没搞明白这个云编译到底是怎么回事了???
我云编译的用测试版,Android,未加密,未压缩的。求解!



5
帖子
0
勋章
1万+
Y币
融云是第三方模块,云编译添加模块有效
3
帖子
0
勋章
287
Y币
在本地的真机测试的时候,会默认将除了第三方模块(如融云,个推等,这些模块本身就很大了,而且相互之间一起编译可能还存在冲突)之外的所有编译进去,方便开发调试。但是这里有大量的模块你的应用用不到,也会被编译进去,所以安装包的Size就非常大。
但是在云编译的时候,默认不会编译任何模块,需要你选择自己要使用的模块进行编译,这样编译出的安装包就不会过大。
3
帖子
0
勋章
287
Y币
在本地的真机测试的时候,会默认将除了第三方模块(如融云,个推等,这些模块本身就很大了,而且相互之间一起编译可能还存在冲突)之外的所有编译进去,方便开发调试。但是这里有大量的模块你的应用用不到,也会被编译进去,所以安装包的Size就非常大。
但是在云编译的时候,默认不会编译任何模块,需要你选择自己要使用的模块进行编译,这样编译出的安装包就不会过大。
24
帖子
0
勋章
220
Y币
恩,确实是这个问题,我后来发现了,还有一个问题,融云获取会话列表的功能为什么没有任何返回值啊?
这是我的写法:
  1. function getConversationList(){
  2.                 //测试从rongCloud获取会话列表
  3.                 var rong = api.require('rongCloud');
  4.                 if(!rong){
  5.                     alert("rong is undefind!");
  6.                     return;
  7.                 }else{
  8.                     alert("rong = " + JSON.stringify(ret));
  9.                 }
  10.                 rong.init(function(ret, err) {
  11.                     if(ret){
  12.                         if (ret.status == 'error'){
  13.                             api.toast({ msg: err.code });
  14.                         }
  15.                     }else{
  16.                         alert("rong.init.ret is null");
  17.                     }
  18.                 });
  19.                 rong.setOnReceiveMessageListener(function(ret, err) {
  20.                     if(!ret){
  21.                         alert("rong.setOnReceiveMessageListener.ret is null");
  22.                         return;
  23.                     }
  24.                     if (ret.result.message.targetId) {
  25.                         api.toast({
  26.                             msg : '新消息:' + ret.result.message.content.text,
  27.                             duration : 2000,
  28.                             location : 'top'
  29.                         });
  30.                     }
  31.                 });
  32.                 rong.connect({
  33.                     token : mytoken
  34.                 }, function(ret, err) {
  35.                     if(!ret){
  36.                         alert("rong.connect.ret is null");
  37.                     }
  38.                 });
  39.                 rong.getConversationList(function (ret, err) {
  40.                     if(ret){
  41.                         alert("rong.getConversationList.ret = "+JSON.stringify(ret.result));
  42.                     }else{
  43.                         alert("rong.getConversationList.ret is null");
  44.                     }
  45.                 });
  46.                         }
复制代码

结果没有任何的返回值,这是咋回事啊?
您需要登录后才可以回帖 登录

本版积分规则