安卓原生插件开发+打包aar插件+uniapp原生插件打包

原生插件开发官方链接: 开发者须知 | uni小程序SDK

注意点:

1.  第三方sdk初始化如图所示

安卓原生插件开发+打包aar插件+uniapp原生插件打包_第1张图片

 也可以在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插件依赖和项目本身其他的插件依赖有重复,需要根据报错信息,挨个排除依赖,如图所示,我的依赖包有三个发生了重复依赖

安卓原生插件开发+打包aar插件+uniapp原生插件打包_第2张图片

报错信息如图所示:

 安卓原生插件开发+打包aar插件+uniapp原生插件打包_第3张图片

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目录

安卓原生插件开发+打包aar插件+uniapp原生插件打包_第4张图片

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 保存日志

你可能感兴趣的:(android,uni-app)