最近要在一个原生app的基础上开发新功能, 新功能和原app没有太多交集, 考虑到原生app开发复杂,工期较长, 决定在原生app的基础上整合uni小程序, 使用uniapp开发新功能, 在整合的过程中遇到了几个问题, 这里记录一下,
一. uni小程序的文档在3.5.3这个版本, 目前为止,他的文档还没有随之修改,很多接口对不上, 第一次整合的时候遇到打开小程序闪退的问题, 也没有具体的报错信息, 这就很难调试,
解决问题的方法是
根据他自带的demo进行调试,
1.修改 targetSdkVersion<30
2. 将proguard.cfg和自己原有的文件整合,
3. AndroidManifest.xml 别忘添加如下的activity
//uniapp 使用
二. 原生app,跳转到小程序传参问题, 不能跳转到tabBar页面这个问题到目前为止, 一直还是没有修复, 那我就尝试使用中转页面获取参数, 不知道是这个3.5.3版本的问题还是怎么回事, 在浏览器可以获取到中转页的数据, 在原生app跳转就不行, 于是采用了uniapp向宿主app发送消息事件获取token参数的方案, 具体代码如下
宿主原生App
DCUniMPSDK.getInstance().setOnUniMPEventCallBack { appid, event, data, callback ->
Log.i("cs", "onUniMPEventReceive event=$event")
//回传数据给小程序
callback.invoke(O2SDKManager.instance().cQqrwToken)
}
val uniMPOpenConfiguration = UniMPOpenConfiguration()
uniMPOpenConfiguration.redirectPath = "pages/splash/splash"
DCUniMPSDK.getInstance().openUniMP(applicationContext, "__UNI__1A588F9", uniMPOpenConfiguration)
uni小程序
这是欢迎页面, debug测试时显示000
qqrwToken:{{token}}
获取到token之后就可以跳转到tabBar页面了, 我觉得这还算是一个坑的,
三. 关于wgt的解压和替换
每次打包wgt, 然后改成zip, 解压之后替换原生app里面的文件, 感觉还是很繁琐, 我在调试首页传参这个问题的时候就因为这个感到很烦躁, 于是写了一个建议脚本, 自动替换原文件
@echo off
echo start working
echo clean folder
del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\*.*
rd /q /s D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
md D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
echo open folder
start explorer "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
xcopy D:\workspace_uniapp\qqrwHe\unpackage\release\__UNI__1A588F9.wgt D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
cd /d "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
ren __UNI__1A588F9.wgt __UNI__1A588F9.zip
"C:\Program Files\WinRAR\WinRAR.exe" X __UNI__1A588F9.zip
del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\__UNI__1A588F9.zip
pause