美文网首页APP & program
React Native 第三方库SDK版本不兼容

React Native 第三方库SDK版本不兼容

作者: 华健_4106 | 来源:发表于2019-07-08 20:48 被阅读0次

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进行尝试。

AAPT:error:attr/ttcIndex not found

在RN项目的主工程Android目录下的build.gradle进行如下配置,可使的一些比较完善的库读取主工程中的配置信息,从而保证第三方库与主工程中compileSdkVersion等信息一致。

android/build.gradle

一些第三方库的老旧版本,在内部写死了配置信息,如下图所示,则需要我们手动更改与主工程配置保持一致

module/android/build.gradle

一些比较完善的第三方库,则获取主工程android/build.gradle文件里的ext配置信息,切记检查主工程中的配置无误。

react-native-svg/android/build.gradle
react-native-image-crop-picker/android/build.gradle

2.在解决完1号配置问题后,发现如下错误【:app:transformClassesWithMultidexlistForDebug】,该错误初步判断为重复依赖

:app:transformClassesWithMultidexlistForDebug

使用gradlew app:dependencies 命令查看项目依赖结构时,发现只有react-native-pdf的依赖中引入了com.github.barteksc:android-pdf-viewer:3.1.0-beta.1,此中依赖于support-v4,故用 exclude module:'support-v4'命令排除依赖,然而并未解决问题

exclude module使用示例 gradlew app:dependencies

3.【:app:transformDexArchieWithDexMergerForbug】

:app:transformDexArchieWithDexMergerForbug
react-native-device-info/android/build.gradle

对于无法排除的第三方依赖库问题,进行全部屏蔽,逐一放开测试,最终定位于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如下

react-native-device-info/android/build.gradle react-native-device-info/example

相关文章

网友评论

    本文标题:React Native 第三方库SDK版本不兼容

    本文链接:https://www.haomeiwen.com/subject/kjzahctx.html