安卓原生为底,uniapp插件引入
一、安卓项目准备官方文档1.SDK引入官方SDK下载地址备注:目前官方文档有BUG,点击无法下载,需要右键,跳转链接2.安卓准备添加基础依赖库及资源文件新建安卓项目后,将官方SDK解压得到|-- uniMPSDK/SDK//uni小程序SDK|-- assets// assets资源文件|-- Libs//依赖库|-- res// 资源文件|-- src//微信
一、安卓项目准备
1.SDK引入
备注:目前官方文档有BUG,点击无法下载,需要右键,跳转链接
2.安卓准备
添加基础依赖库及资源文件
新建安卓项目后,将官方SDK解压得到
|-- uniMPSDK/SDK //uni小程序SDK
|-- assets // assets资源文件
|-- Libs //依赖库
|-- res // 资源文件
|-- src //微信分享支付需要的activity
|-- AndroidManifest.xml //模块配置信息
|-- proguard.cfg //混淆配置
/-- uniMPSDK/DEMO //uni小程序SDK示例DEMO
/-- uniMPSDK\Features // 框架已有的原生功能依赖库
|-- Features 依赖库说明.xls
|-- libs //原生功能依赖库
Libs文件夹中的依赖库是不用全部都集成到宿主项目中。可根据功能增删修改。具体可阅读Features 依赖库说明.xls参考修改添加等操作。
除视频、地图、分享、支付、登录、直播pusher等SDK,只集成基础模块如下:
uniMPSDK-release.aar //必须集成
uniapp-release.aar //必须集成
sqlite-release.aar
msa_mdid_1.0.13.aar //必须集成 注意(2.8.0版本的SDK及以下版本请集成miit_mdid_1.0.10.aar)
messaging-release.aar
iBeacon-release.aar
fingerprint-release.aar
contacts-release.aar
Bluetooth-release.aar
android-gif-drawable-release@1.2.17.aar //必须集成
dependencies {
implementation 'com.android.support:recyclerview-v7:28.0.0' //必须集成
implementation 'com.android.support:support-v4:28.0.0' //必须集成
implementation 'com.android.support:appcompat-v7:28.0.0' //必须集成
implementation 'com.alibaba:fastjson:1.1.46.android' //必须集成
implementation 'com.facebook.fresco:fresco:1.13.0'//必须集成
implementation 'com.facebook.fresco:animated-gif:1.13.0'//必须集成
implementation 'com.github.bumptech.glide:glide:4.9.0'//必须集成
}
必须集成的依赖库一定要集成。版本号尽量一致。如果依赖库不一致或未集成可能会出现页面显示异常等现象
将SDK资源复制到安卓目录内
gradle配置
以下为基础配置。具体可参考uniMPSDK示例DEMO中app/build.gradle文件
//必须配置
def mfph = [
//宿主包名
"apk.applicationId" : "xxx.xxx.xxxxx",
]
android {
defaultConfig {
targetSdkVersion 26 //最优26 2.8.11开始支持29~30
ndk {
abiFilters 'x86','armeabi-v7a',"arm64-v8a" //不支持armeabi
}
manifestPlaceholders = mfph
}
//此处配置必须添加 否则无法正确运行
aaptOptions {
additionalParameters '--auto-add-overlay'
//noCompress 'foo', 'bar'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
}
//导入aar需要的配置
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
//导入SDK相关依赖jar、aar
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs')
//必须添加的依赖
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.facebook.fresco:animated-gif:1.13.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
}
注意!!!! targetSdkVersion 取值范围最高30 最优26 设置值域超过28可能在android10以上手机出现白屏问题。
HX2.8.11+已支持targetSdkVersion设置30
3.uniApp准备
将uniapp打包为wgt文件或本地打包
备注:wgt解压后与本地打包一致
将小程序导入到安卓项目内
内置uni小程序集成方式
是在 src/main/assets/apps 内创建 __UNI__XXX/www 文件夹
并将wgt文件解压到www文件夹内
__UNI__XXX为uniapp的AppID
非内置uni小程序集成方式
应用资源包(.wgt)可以选择从云端获取或共享文件等方式。存放到手机SD卡中。宿主通过uni小程序SDK的API调用releaseWgtToRunPathFromePath实现释放资源包集成uni小程序。
本此使用的为内置uniapp方法,非内置uni小程序集成方式不做重点说明
二、安卓运行uniapp重新并通讯
初始化uniMPSDK
import io.dcloud.feature.sdk.DCSDKInitConfig;
import io.dcloud.feature.sdk.DCUniMPSDK;
import io.dcloud.feature.sdk.DCUniMPJSCallback;
import io.dcloud.feature.sdk.MenuActionSheetItem;
MenuActionSheetItem item = new MenuActionSheetItem("关于", "gy");
List<MenuActionSheetItem> sheetItems = new ArrayList<>();
sheetItems.add(item);
DCSDKInitConfig config = new DCSDKInitConfig.Builder()
.setCapsule(true)//设置是否使用胶囊按钮
.setMenuDefFontSize("16px")//设置菜单默认按钮字体大小
.setMenuDefFontColor("#ff00ff")//设置菜单默认按钮文字有颜色
.setMenuDefFontWeight("normal")//设置菜单默认按钮上文字的粗细
.setMenuActionSheetItems(sheetItems)//设置默认菜单按钮items
.setEnableBackground(false)//设置小程序退出时是否进入后台
.build();
DCuniMPSDK.getInstance().initialize(this, config);
启动uni小程序
确保已初始化完毕再调用!可通过DCUniMPSDK.getInstance().isInitialize()判断。
try {
DCUniMPSDK.getInstance().startApp(/**上下文(this) */,/**uniApp的AppId(__UNI__XXX)*/,/**跳转的页面路径*/)
} catch (Exception e) {
e.printStackTrace();
}
安卓原生与uniApp间的通讯
安卓发送消息给uniApp
安卓发送消息
try {
JSONObject dataOfToUnaipp=new JSONObject();
dataOfToUnaipp.put("Key","Value");
DCUniMPSDK.getInstance().sendUniMPEvent("appData", dataOfToUnaipp);
} catch (Exception e) {
e.printStackTrace();
}
小程序监听安卓所发送数据
uni.onNativeEventReceive(function(event, data){
that.appData=`event:${event},data${data}`
});
监听为小程序已准备接收安卓发送的数据
uniApp发送消息给安卓
uniapp发送数据并接收回调
uni.sendNativeEvent("aa",this.uniData, function(e){
this.uniData=e;
});
安卓接收数据并发送回调
DCUniMPSDK.getInstance().setOnUniMPEventCallBack(new DCUniMPSDK.IOnUniMPEventCallBack() {
@Override
public void onUniMPEventReceive(String event, Object data, DCUniMPJSCallback callback) {
callback.invoke( "测试数据");
}
更多推荐
所有评论(0)