16

我最近升级到 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

由于反应页面上的问题已关闭,因此我正在寻找替代方案,然后再弃用该解决方法。

4

4 回答 4

17

在您的 gradle.properties 文件中添加以下行:

classpath 'com.android.tools.build:gradle:3.0.0'
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
android.enableAapt2=false
于 2017-10-30T11:20:44.003 回答
3

在我的情况下,添加android.enableAapt2=false到 gradle.properties 就足以解决这个问题。

[更新]这确实是贬值了。因此,您可能想尝试另一种解决方案。

于 2018-03-27T23:05:11.273 回答
0

就我而言,我不得不替换compileimplementation

修改app/build.gradle为:

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:23.0.1"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}
于 2018-03-23T18:12:56.797 回答
0

我在我的应用程序中遇到了类似的问题。它通过转到“Android”目录并运行来解决

gradlew clean
于 2018-05-09T09:22:54.850 回答