前言:有关uniapp调用安卓第三方sdk,需要将第三方提供的arr在自定义插件中使用,封装成插件,再打包提供给uniapp调用。
问题:由于第三方sdk依赖了 com.google.protobuf:protobuf-java:3.21.12 ,我在 dependencies节点中添加了该依赖, implementation 'com.google.protobuf:protobuf-java:3.21.12' ,在自定义插件方法中调用也没问题,打包后,在uniapp中调用失败,报错找不到 protobuf 这个包,后来发现arr包的内部结构中确实也没有protobuf 这个包。
解决办法:手动下载这个jar包,放在libs中,右击 选择as library,可以看到 dependencies中自动添加了 implementation files('libs\\protobuf-java-3.21.12.jar'), 重新打包,可以看到arr包的内部结构中有了这个jar包。
附上下载jar包地址:仓库服务 (aliyun.com)
原因:我也不知道为什么打包不进去,我在网上查阅资料时发现,如果你的第三方sdk依赖于私有maven仓库,需要手动下载jar包。可是我这个也不是私有maven...希望路过的大佬能帮忙解答一下~
如果你遇到了像我一样,在android studio这边使用自定义插件时,能调用第三方sdk,但是打包arr,在uniapp中无法使用sdk中的方法,请检查:
1. 先检查你的自定义插件是否能够使用,可以先写个简单示例,在uniapp调用。
2. 在uniapp中除了要将你自己打包的arr放进去,第三方的arr也要放进去。
3. 如果第三方的sdk使用了其他依赖,检查你打包的arr中是否包含这个依赖,没有可手动下载,放在libs中,右击 as library,重新打包即可。
4. 代码添加tray catch,根据报错找原因。(异常分为Exception和Error,Error需要使用Throwable来捕获)
Map map = new HashMap<>();
try {
} catch (Throwable e){
String s = e.toString();
map.put("error", s);
}