Проблемы с ресурсами, создаваемые реакцией в Android Studio 3

Недавно я обновился до Android Studio 3

gradle plugin: 3.0.0-beta2
gradle: 4.1

В нашем проекте мы используем: "react-native": "0.46.4" с плагином codepush.

Строительство:

gradlew assembleStagingDebug

работает отлично, но как только я пытаюсь построить производство:

gradlew assembleProductionRelease

Я получаю сообщение об ошибке, вызванное ресурсами, создаваемыми в результате выполнения задачи processProductinoReleaseResources:

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

Поскольку проблемы на странице реагирования закрыты, я ищу альтернативы, прежде чем они откажутся от этого метода обхода.

Ответ 1

В файле 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

Ответ 2

В моем случае для исправления этого было достаточно добавить android.enableAapt2=false для gradle.properties.

Ответ 3

В моем случае мне пришлось заменить compile на implementation

Измените 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
}

Ответ 4

Я столкнулся с аналогичной проблемой в своем приложении. Это разрешено, перейдя в каталог "Android" и запустите

gradlew clean