1.在RN项目中,经常会引入很多第三方插件库,如果只是单纯的JS库,一般比较好解决,但当引入一些原生插件库时,需要非常谨慎。
android工程经常因为SDK编译版本不一致导致报错。
【AAPT:error:attr/ttcIndex not found】
下图所示错误初步以为是有第三方库使用28compileSdk,与主工程中27不兼容导致,尝试使用
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}
对特定库进行强制依赖,通过编译,但在打包时始终会提示如下./gradle/cache中未找到两个资源。只得将主工程改为28进行尝试。
![](https://img.haomeiwen.com/i18660672/a1d18614f8b59885.png)
在RN项目的主工程Android目录下的build.gradle进行如下配置,可使的一些比较完善的库读取主工程中的配置信息,从而保证第三方库与主工程中compileSdkVersion等信息一致。
![](https://img.haomeiwen.com/i18660672/6bde652569d02b0a.png)
一些第三方库的老旧版本,在内部写死了配置信息,如下图所示,则需要我们手动更改与主工程配置保持一致
![](https://img.haomeiwen.com/i18660672/03e08ed8df8a1dda.png)
一些比较完善的第三方库,则获取主工程android/build.gradle文件里的ext配置信息,切记检查主工程中的配置无误。
![](https://img.haomeiwen.com/i18660672/16f65757c9353b02.png)
![](https://img.haomeiwen.com/i18660672/d01ec5fcb2bbaa81.png)
2.在解决完1号配置问题后,发现如下错误【:app:transformClassesWithMultidexlistForDebug】,该错误初步判断为重复依赖
![](https://img.haomeiwen.com/i18660672/27278172cc8621b4.png)
使用gradlew app:dependencies 命令查看项目依赖结构时,发现只有react-native-pdf的依赖中引入了com.github.barteksc:android-pdf-viewer:3.1.0-beta.1,此中依赖于support-v4,故用 exclude module:'support-v4'命令排除依赖,然而并未解决问题
![](https://img.haomeiwen.com/i18660672/53becb99623671f7.png)
![](https://img.haomeiwen.com/i18660672/701e9ac92a564ac1.png)
3.【:app:transformDexArchieWithDexMergerForbug】
![](https://img.haomeiwen.com/i18660672/9ef1ca384693ddab.png)
![](https://img.haomeiwen.com/i18660672/1fa82a606b12482d.png)
对于无法排除的第三方依赖库问题,进行全部屏蔽,逐一放开测试,最终定位于react-native-device-info库中,该版本implementation了‘com.google.android.gms:play-services-gcm',导致。在主工程的build.gradle中配置如下解决。
ext{
googlePlayServicesVersion ="15.0.1"
}
RN项目通常固定package.json中的依赖版本,故该库过于老旧导致,github上最新的版本build.gradle如下
![](https://img.haomeiwen.com/i18660672/4bde58e15eba88eb.png)
![](https://img.haomeiwen.com/i18660672/bd425f0c3845f421.png)
网友评论