我最近升级到 Android Studio 3
gradle plugin: 3.0.0-beta2
gradle: 4.1
在我们的项目中,我们使用: "react-native": "0.46.4" 和codepush 插件。
建造:
gradlew assembleStagingDebug
工作得很好,但是一旦我尝试建立生产:
gradlew assembleProductionRelease
我收到由 processProductinoReleaseResources 任务中的 react 创建的资源引起的错误:
Issues:
- ERROR: /Users/user/react/android/app/build/intermediates/res/merged/production/release/drawable-hdpi/node_modules_reactnavigation_src_views_assets_backicon.png uncompiled PNG file passed as argument. Must be compiled first into .flat file.
- ERROR: failed parsing overlays
at com.android.builder.internal.aapt.v2.AaptV2Jni.buildException(AaptV2Jni.java:154)
在我对这个问题的征服中,我尝试禁用 proguard,例如:
buildTypes {
release {
debuggable true
minifyEnabled false
shrinkResources false
}
debug {
debuggable true
minifyEnabled false
println proguardFiles
}
}
但没有任何运气。
有任何想法吗?我还希望能解释一下这种 .flat 转换的 android 资源在哪里发生,它实际上做了什么,以及为什么它在 StagingDebug 任务期间没有发生。
这里介绍的解决方法最终对我有用。但我认为原来的问题仍然存在。
更新 28.3.2018由于 Android Studio 3.1 升级我得到这个:
WARNING: The option 'android.enableAapt2' is deprecated and should not be used anymore. Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018
由于反应页面上的问题已关闭,因此我正在寻找替代方案,然后再弃用该解决方法。