Android Studio 3中响应生成的资源问题

Mik*_*e T 16 android gradle react-native code-push android-studio-3.0

我最近升级到Android Studio 3

gradle plugin: 3.0.0-beta2
gradle: 4.1
Run Code Online (Sandbox Code Playgroud)

在我们的项目中,我们使用:react-native":"0.46.4"与codepush插件.

建造:

gradlew assembleStagingDebug
Run Code Online (Sandbox Code Playgroud)

工作得很好,但一旦我尝试建立生产:

gradlew assembleProductionRelease
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,该错误是由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)
Run Code Online (Sandbox Code Playgroud)

在我对这个问题的征服中,我尝试了禁用proguard,如:

buildTypes {
        release {
            debuggable true
            minifyEnabled false
            shrinkResources false
        }
        debug {
            debuggable true
            minifyEnabled false
            println proguardFiles
        }
    }
Run Code Online (Sandbox Code Playgroud)

但没有任何运气.

有任何想法吗?我还要感谢解释android资源的.flat转换在实际发生的地方发生了什么,以及为什么它在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
Run Code Online (Sandbox Code Playgroud)

由于反应页面上的问题已经关闭,我在寻找替代方案之前他们弃用了这种解决方法.

小智 18

在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
Run Code Online (Sandbox Code Playgroud)

  • 嗯它有效,但我不知道为什么:PI刚刚添加了`android.enableAapt2 = false`并且在开始工作时......我的`gradle.properties`文件已经有了'android.useDeprecatedNdk = true`和`RELEASE_STORE_FILE`信息. (2认同)