android - Android Studio 3 中的 react 生成的资源问题

标签 android gradle react-native android-studio-3.0 code-push

我最近升级到了 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 任务期间没有发生。

提出的解决方法here最后为我工作。但我认为原来的问题仍然存在。

更新 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

由于 react 页面上的问题已关闭,我正在寻找替代方案,以免他们弃用该解决方法。

最佳答案

在您的 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

关于android - Android Studio 3 中的 react 生成的资源问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45954209/

相关文章:

android - 反向地理定位

java - 无法连接数据库

android - ADT(eclipse) 现在是否支持 apklib 或 aar,直到 ADT v23.04?

gradle - 构建 doLast 未在多模块构建上执行

javascript - 在 React Native 中加载图像时如何获取响应 header ?

android - 应用程序启动时出现错误 "Could not get BatchedBridge, make sure your bundle is packaged properly"

android - 是否建议将 Spinner 用于布局更改

gradle - 即使使用 Intellij 在 gradle 中为其添加了 Maven 存储库,也无法声明 JSONObject 类型

react-native - react native : How to hide an element other than conditional render?

android - 如何使用 Android Studio 和 Gradle 创建最佳的 Android 应用项目结构?