8***@qq.com
8***@qq.com
  • 发布:2021-07-16 22:19
  • 更新:2022-01-17 14:45
  • 阅读:1780

请教大神涂鸦智能和uniapp混合开发的问题

分类:uni-app

一、问题
因为一个项目要用Uniapp去操作智能家居设备,公司指明用涂鸦智能配合uniapp混合开发,但是在打包上碰到了问题。目前测试到如下步骤,先说说已经在自定义基座环境中实现的用户登录功能。
1.android代码中使用涂鸦智能的api文档实现用户登录功能。

 @UniJSMethod(uiThread = true)  
    public void login(JSONObject acceptJson, UniJSCallback callback) {  
        if (acceptJson != null && !acceptJson.equals("")) {  
            String username = acceptJson.getString("userName");  
            String password = acceptJson.getString("password");  
            //手机密码登录  
            TuyaHomeSdk.getUserInstance().loginWithPhonePassword("86", username, password, new ILoginCallback() {  
                @Override  
                public void onSuccess(User user) {  
                    JSONObject data = new JSONObject();  
                    data.put("code", 0);  
                    data.put("msg", "恭喜成功登录涂鸦智能");  
                    callback.invoke(data);  
                }  
                @Override  
                public void onError(String code, String error) {  
                    JSONObject data = new JSONObject();  
                    data.put("code", -1);  
                    data.put("msg", error);  
                    callback.invoke(data);  
                }  
            });  
            //callback.invoke(data);  
            //callback.invokeAndKeepAlive(data);  
        }  
    }

2.然后打包android为apk程序放到unpackage/debug中作为自定义基座运行,然后用uniapp做了一个登录界面,调用上述android的登录函数

testAndroid(){  
                const loginModule=uni.requireNativePlugin("ljy-testModule")//调用android中自定义的插件名称  
                loginModule.login({//login表示自定义插件的函数名,第一个表示要传递的参数  
                    userName: this.username,  
                    password: this.password  
                },(ret)=>{//ret表示处理完后返回的值,即UniJSCallback  
                    //const returnObject=JSON.stringify(ret);//转换为json类型  
                    if(ret.code==0){//如果登录成功  

                    }else{  

                    }  
                    uni.showModal({  
                        title: '系统提示',  
                        content:ret.msg,  
                        showCancel:false  
                    });  
                });  
            }

3.以自定义基座直接在手机上运行,可以直接测试成功。

  1. 接下来想云打包为apk进行测试
    (1)将android中的module打包为aar文件(按官方文档)
    (2)将android的文件放到uniapp项目的本地插件中


(3)进行云打包,测试时点击登录无效,没有反应。

二、经过思考有两点原因
1.涂鸦智能在和Uniapp在android studio中进行混合开发时,必须要在app项目中重写application(在自定义基座测试成功)
代码如下:
public class YyzxyqDCloudApplication extends DCloudApplication{
@Override
public void onCreate() {
super.onCreate();
TuyaHomeSdk.init(this);
TuyaHomeSdk.setDebugMode(true);
}
}
2.需要在app的assets文件夹中加入涂鸦智能账号对应的安全图片

  1. 需要在app的AndroidManifest.xml中加入涂鸦智能账户对应的秘钥信息,如下
    <!--涂鸦智能的集成安全图片和设置 Appkey 和 AppSecret,必须要设置-->
    <meta-data
    android:name="TUYA_SMART_APPKEY"
    android:value="eqkvmg4afkqgh7vmvt5y" />
    <meta-data
    android:name="TUYA_SMART_SECRET"
    android:value="j8yh4cx4hmtyj9a9qknxt7dcuv3dm5pf" />
    5.在项目打包时,用到的module在app之外的,如本项目打包的是app之外的module


因此对Module执行assembleRelease时,在app的秘钥、自定义application应该是不能够一起打包吧,所以单纯靠这个module也就无法运行。请问像这种情况,应该如何进行打包处理,发布正式包呢?

2021-07-16 22:19 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

楼主 你弄好了吗

该问题目前已经被锁定, 无法添加新回复