RN-com.google.android.gms:play-services-gcm依赖包不兼容的BUG

公司的项目(Android)突然间无法打包,打包报错,错误如下:
:react-native-device-info:processReleaseManifest UP-TO-DATE
:react-native-device-info:processReleaseResources FAILED
ERROR: In  FontFamilyFont, unable to find attribute android:fontVariationSettings
ERROR: In  FontFamilyFont, unable to find attribute android:ttcIndex


BUILD FAILED

Total time: 31.533 secs

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-device-info:processReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
errorinfo Command failed with exit code 1.
 Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Process finished with exit code 1
对此BUG,起初我以为是react-native-device-info插件更新了,里面的依赖和项目中其他的包冲突了或者不兼容了,其实严格说起来 这个方向没有错,但是,我找了下我的 package.json中react-native-device-info的版本号,我发现它是固定版本的,也就是说我在yarn 的过程中,react-native-device-info还是原先的版本,不存在更新的情况,于是 自此我就走错了方向,上网上搜索了一番,各种五花八门的解释和答案都有了,我根据各种方式走了一遍,还升级了gradle的版本等等,还是不行,于是我又开始怀疑是不是依赖包冲突或者不兼容了。后来请一个从未更新过代码、插件的老大的打包他的本地项目,发现他也是同样的报错。至此才知道是因为react-native-device-info中的谷歌依赖更新了。。。。

项目中的插件版本如下:

"react": "16.4.1",
"react-native": "0.56.1",
"react-native-device-info": "0.12.1",

react-native-device-info的build.gradle文件

dependencies {
    compile 'com.facebook.react:react-native:+'
    compile 'com.google.android.gms:play-services-gcm:+'
}
因为更新后的谷歌依赖和项目中的build.gradle版本不兼容

项目中的build.gradle文件

ext {
        buildToolsVersion = "26.0.3"
        minSdkVersion = 19
        compileSdkVersion = 26
        targetSdkVersion = 27
        supportLibVersion = "26.1.0"
    }
于是,需要修改react-native-device-info的build.gradle文件中的谷歌依赖的版本

修改后的react-native-device-info的build.gradle文件

dependencies {
    compile 'com.facebook.react:react-native:+'
    compile 'com.google.android.gms:play-services-gcm:15.0.1'
}
然后再次打包,成功鸟!!!!因为试过多种办法都没找到真正的问题所在,所以就把问题和解决方案记录下来,希望遇到跟我一样的问题而又不知道如何解决的朋友们可以参考下!!!!

备注:最后,建议朋友们最好通过NodeJS修改一下react-native-device-info中的build.gradle文件,不然每次yarn 之后 又会被还原。。。一次写好,终身解决。。。棒棒哒!不知道如何写的同学们,请参考我的另外一篇文章【RN 中利用NodeJS修改文件内容】[https://www.jianshu.com/p/f5ad77ab71a6](https://www.jianshu.com/p/f5ad77ab71a6) ,谢谢!!

你可能感兴趣的:(RN-com.google.android.gms:play-services-gcm依赖包不兼容的BUG)