React本机构建签名的APK失败



我用react native创建了一个新项目,只需几个包(react nativecamera、react naturedevice info、react原生元素、react local geocoder、react national qrcode scanner、react native vector icons、react navigation(,但我不明白为什么它没有构建。我执行这个命令来生成APK:

gradlew clean
gradlew assembleRelease

输出为:

  • 出了什么问题:任务":react本机设备信息:verifyReleaseResources"的执行失败。

    com.android.ide.common.prrocess.ProcessException:无法执行aapt

如果我删除了react本机设备信息包,则错误将显示在下一个安装的包中,该包是react本地相机。

如果我在grade.properties中设置android.enableAapt2=true(上面的错误是在禁用aapt2的情况下引发的(,我会得到这个错误:

D:WorkingCopyAppsCpVehiclesrcandroidappbuildintermediatesresmergedreleasedrawable-hdpinode_modules_reactnavigation_src_views_assets_backicon.png: error: uncompiled PNG file passed as argument. Must be compiled first into .flat file..
error: failed parsing overlays.

我的build.gradle文件是这样的:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url "$rootDir/../node_modules/react-native/android" }
maven { url "https://jitpack.io" }
maven { url 'https://maven.google.com' }
mavenCentral()
google()
}
}

subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion '27.1.1'
}
}
}
}

gradle-wrapper特性:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip

当这个项目刚开始的时候,我没有错误地构建了APK。

如果我试着用安卓工作室构建它,它工作得很好,但从设备上打开应用程序时,它会在出现之前崩溃。在Play Store控制台中,我收到了以下错误:

FATAL EXCEPTION: Thread-3
Process: com.cpvehicle, PID: 8053
java.lang.RuntimeException: Unable to load script from assets 'index.android.bundle'. Make sure your bundle is packaged correctly or you're running a packager server.
at com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)

谢谢。

我找到了这个解决方案或更好的解决方案:

  1. 在gradle.properties 上禁用aapt2

    android.enableAapt2=错误

  2. 在build.gradle的子项目中插入以下内容:

    afterEvaluate{project->if(project.hasProperty("android"(({安卓{compileSdk版本26}}}

最新更新