uniapp生成android,集成商汤科技的android的sdk识别身份z信息
二、开发思路uniapp使用Dcloudx软件的“原生打包”,然后集成到android项目中(参考了DCloudx的例子),发布成android包。
三、遇到的问题 1、uniapp与android Studio集成问题- uniapp集成androiduniapp和android间进行数据传输,方法调用uniapp离线打包集成到android studio中运行到真机提示app key不正确问题
- android包升级到androidx包,报错问题页面需要在AndroidManifest.xml中声明android中各页面数据返回问题打包apk
- 图片的byte[]数组转base64nvue样式扭曲问题,flex布局的使用
- 生成Android签名证书:Android平台签名证书(.keystore)生成指南申请AppKey参考Hbuildx中提供的App离线打包SDK,进行配置android端将HBuilderX中的项目导出,将导出的资源复制到assets->apps下,如下图所示:
修改build.gradle中signingConfigs中的证书数据,将证书拷贝到相应位置
signingConfigs { config { keyAlias 'ecodeocrtests'// 别名 keyPassword 'admin1'// 密码 storeFile file('test.keystore')// key路径 storePassword 'admin1'// 密码 v1SigningEnabled true v2SigningEnabled true } }
- 在build.gradle中引入需要导入sdk的arr文件,引入必要的jar包
dependencies { implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.facebook.fresco:fresco:2.5.0' implementation "com.facebook.fresco:animated-gif:2.5.0" implementation 'com.github.bumptech.glide:glide:4.9.0' implementation 'com.alibaba:fastjson:1.1.46.android' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' //rx implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.14' implementation 'com.drewnoakes:metadata-extractor:2.12.0' }
- 第三方sdk存在so库文件,需要在build.gradle中配置添加armeabi-v7a、arm64-v8a、x86
defaultConfig { // ...省略代码 ndk { abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a' } }2. uniapp和android间进行数据传输,方法调用
- 页面请求同步
(略)页面请求异步
(略)自动返回
// java中发送 Mapparams=new HashMap<>(); params.put("code", "success"); params.put("msg", "识别成功"); mWXSDKInstance.fireGlobalEventCallback("portraitEvent", params);
// 页面中接收 // 身份z人像照识别,返回数据监听 plus.globalEvent.addEventListener('portraitEvent', ret => { modal.toast({ message: ret.msg, duration: 5 }); this.idCardInfo.mName = ret.idCardInfo.mName; // 将接收的图片byte数组转为arrayBuffer let arrayBuffer = new Int8Array(ret.idCardInfo.mResultFrontImageData).buffer // 由arrayBuffer转为base64字符串 const base64 = uni.arrayBufferTobase64(arrayBuffer) // 拼接base64字符串显示图片 this.idCardInfo.portraitImgData = 'data:image/jpeg;base64,' + base64 });3. uniapp离线打包集成到android studio中运行到真机提示app key不正确问题
由于1中uniapp和android代码配置有问题
2、android Studio中的问题 1. android包升级到androidx包,报错问题android包中的api,在androidx包中都有对应的实现,百度查一查,就可以完美修改
2. 页面需要在AndroidManifest.xml中声明新增的页面需要在AndroidManifest.xml中声明后才能使用,不然会报错。
3. android中各页面数据返回问题- 使用Intent保存数据,具有大小限制,太大的图片需要压缩使用静态变量存储
public class DataHelper { private static final DataHelper helper= new DataHelper(); public static DataHelper getInstance() {return helper;} Map4.打包apkdata = new HashMap (); public void saveData(String id, Object object) { data.put(id, object); } public Object getData(String id) { return data.get(id); } public Object getDataAndRemove(String id) { Object obj = data.get(id); data.remove(id); return obj; } }
参考:https://blog.csdn.net/u012241616/article/details/108803154
3、 uniapp中的问题- 图片的byte[]数组转base64
let arrayBuffer = new Int8Array(ret.idCardInfo.mResultFrontImageData).buffer // 由arrayBuffer转为base64字符串 const base64 = uni.arrayBufferTobase64(arrayBuffer) // 拼接base64字符串显示图片 this.idCardInfo.portraitImgData = 'data:image/jpeg;base64,' + base64
- nvue样式扭曲问题,flex布局的使用
(略)
- android打包apk:https://blog.csdn.net/u012241616/article/details/108803154Android平台签名证书(.keystore)生成指南拍照图片过大时进行压缩:
https://www.cnblogs.com/duanxz/p/3651418.html
https://blog.csdn.net/u013928412/article/details/80358597android内数据传递:https://blog.csdn.net/gzyh_tech/article/details/82355585
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)