原生插件开发官方链接: 开发者须知 | uni小程序SDK
注意点:
1. 第三方sdk初始化如图所示
也可以在TestModule中开发initSdk方法,uniapp调用时自行初始化
2. aar插件实际应用时,经历了三个报错
(1) java.lang.reflect.InvocationTargetException
这个报错是因为打包没有暴露出该方法或者TestModule没有定义该方法,也可能是sdk初始化未完成,导致sdk中的某些类没有加载
(2) java.lang.NoClassDefFoundError
这个报错是因为打包时没有将第三方sdk的依赖打进aar包,打开aar包会发现少了libs目录或者少了相关依赖jar/aar包
(3) checkReleaseDuplicateClasses
这个报错原因是打包的aar插件依赖和项目本身其他的插件依赖有重复,需要根据报错信息,挨个排除依赖,如图所示,我的依赖包有三个发生了重复依赖
报错信息如图所示:
3.如何将gradle依赖打进aar的libs目录?
可以使用 'com.kezong.fat-aar' 打包,具体方式:
1 . 在根目录build.gradle中添加依赖
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
//添加插件
classpath 'com.github.kezong:fat-aar:1.3.6'
}
2. 在TestModule(插件module)目录下build.gradle中第一行添加
apply plugin: 'com.kezong.fat-aar'
然后依赖中如下所示添加,
embed 'com.google.protobuf:protobuf-java:2.6.1' implementation 'com.squareup.okhttp3:okhttp:4.8.1' embed 'com.google.code.gson:gson:2.8.6' implementation 'com.squareup.okio:okio:2.8.0' implementation 'com.android.support:support-annotations:26.1.0' embed 'com.loopj.android:android-async-http:1.4.9' embed "android.arch.persistence.room:runtime:1.1.1" embed "android.arch.lifecycle:extensions:1.1.1"
embed 引用的依赖在打包aar插件时,会打进libs目录
4. uniapp调试不打印日志怎么办?
本地配置adb环境变量,adb目录 示例: D:\AndroidSdk\platform-tools
配置好环境变量后使用如下命令:
1、adb connect 192.168.10.31
2、adb devices 查看连接信息
3、adb logcat >D:outlog.txt 抓取日志保存
4、adb logcat|find "查看" >D:outlog.txt 过滤日志
5、adb logcat -v time 查看实时日志
6、adb logcat -v time >D:outlog.txt 保存日志