2017-12-14 13 views
0

私のアプリはGenymotionエミュレータで完全に動作します。 しかし、私はapp-release.apkの構築に直面しています。'gradlew assembleRelease'を使ってネイティブAndroidビルドに失敗する

React native version: 0.46.x 

そしてbuild.gradleファイル:また

... 
android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.2" 
    ... 

私はgradlew assembleDebugを使用する場合、それは以下の出力に成功したが、エミュレータでapp\build\outputs\apk\debug(ない現在作業中のバージョンで間違ったAPKを生成し、まだ古いバージョン)

BUILD SUCCESSFUL in 57s 
225 actionable tasks: 216 executed, 9 up-to-date 

gradlew assembleReleaseを使用しようとしても、次の出力で失敗しました。インストール

> Task :app:processReleaseResources 
Failed to execute aapt 
com.android.ide.common.process.ProcessException: Failed to execute aapt 
     at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796) 
     at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551) 
     at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285) 
     at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109) 
     at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134) 
     at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)  at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 
     at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) 
     at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 
     at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 
     at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 
     at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 
     at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
     at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) 
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99) 
     at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625) 
     at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99) 
     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 
     at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 
     at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 
Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing process <Android Sdk Folder>\build-tools\27.0.1\aapt.exe with arguments {package -f --no-crunch -I <Android Sdk Folder>\platforms\android-24\android.jar -M \\?\<My Project Folder>\android\app\build\intermediates\manifests\full\release\AndroidManifest.xml -S <My Project Folder>\android\app\build\intermediates\res\merged\release -m -J \\?\<My Project Folder>\android\app\build\generated\source\r\release -F <My Project Folder>\android\app\build\intermediates\res\release\resources-release.ap_ -G \\?\<My Project Folder>\android\app\build\intermediates\proguard-rules\release\aapt_rules.txt --custom-package com.beostore -0 apk --output-text-symbols \\?\<My Project Folder>\android\app\build\intermediates\symbols\release --no-version-vectors} 
     at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503) 
     at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482) 
     at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79) 
     at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794) 
     ... 41 more 
Caused by: com.android.ide.common.process.ProcessException: Error while executing process <Android Sdk Folder>\build-tools\27.0.1\aapt.exe with arguments {package -f --no-crunch -I <Android Sdk Folder>\platforms\android-24\android.jar -M \\?\<My Project Folder>\android\app\build\intermediates\manifests\full\release\AndroidManifest.xml -S <My Project Folder>\android\app\build\intermediates\res\merged\release -m -J \\?\<My Project Folder>\android\app\build\generated\source\r\release -F <My Project Folder>\android\app\build\intermediates\res\release\resources-release.ap_ -G \\?\<My Project Folder>\android\app\build\intermediates\proguard-rules\release\aapt_rules.txt --custom-package com.beostore -0 apk --output-text-symbols \\?\<My Project Folder>\android\app\build\intermediates\symbols\release --no-version-vectors} 
     at com.android.build.gradle.internal.process.GradleProcessResult.buildProcessException(GradleProcessResult.java:73) 
     at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:48) 
     at com.android.builder.internal.aapt.AbstractProcessExecutionAapt$1.onSuccess(AbstractProcessExecutionAapt.java:78) 
     at com.android.builder.internal.aapt.AbstractProcessExecutionAapt$1.onSuccess(AbstractProcessExecutionAapt.java:74) 
     at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1237) 
     at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399) 
     at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:911) 
     at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:822) 
     at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:664) 
     at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:48) 
     at com.android.build.gradle.internal.process.GradleProcessExecutor$1.run(GradleProcessExecutor.java:58) 
Caused by: org.gradle.process.internal.ExecException: Process 'command '<Android Sdk Folder>\build-tools\27.0.1\aapt.exe'' finished with non-zero exit value 1 
     at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:380) 
     at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:46) 
     ... 9 more 


FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:processReleaseResources'. 
> Failed to execute aapt 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

* Get more help at https://help.gradle.org 

BUILD FAILED in 2m 6s 
105 actionable tasks: 3 executed, 102 up-to-date 

のAndroidビルドツールのバージョン:インストール

23.0.1 
24.0.3 
25.0.0 
25.0.3 
26.0.1 
26.0.2 
27.0.0 
27.0.1 

そして、プラットフォームのバージョン:私はずっとググ

android-21 
android-23 
android-24 
android-25 
android-26 

、しかし、解決策を見つけることができませんでした。 大きな助けを願います。

ありがとうございます。

答えて

0

最後に修正しました。 このブロックをcurrentBundleTaskdoFirst{...}ブロックの下に追加しました。ブロックはreact.gradleです。

doLast { 
    def moveFunc = { resSuffix -> 
     File originalDir = file("${resourcesDir}/drawable-${resSuffix}") 
     if (originalDir.exists()) { 
      File destDir = file("${resourcesDir}/drawable-${resSuffix}-v4") 
      ant.move(file: originalDir, tofile: destDir) 
     } 
    } 
    moveFunc.curry("ldpi").call() 
    moveFunc.curry("mdpi").call() 
    moveFunc.curry("hdpi").call() 
    moveFunc.curry("xhdpi").call() 
    moveFunc.curry("xxhdpi").call() 
    moveFunc.curry("xxxhdpi").call() 
} 

この回答はGithubのAvatarQing's commentに基づいています。

ありがとうございました。

0

私は同様の問題を抱えています。私はaaptを実行する方法を見て、コマンドラインから同じパラメータで同じプロセスを開始しました。あなたのケースでは、あなたが投稿したログから取られます(恐らくプレースホルダ "Android Sdk Folder"値): - 私の場合にはアイデアgraddleビルドを実行しているとあなたがあるように類似したスタックトレースをもたらすことによって

<Android Sdk Folder>\build-tools\27.0.1\aapt.exe package -f --no-crunch -I <Android Sdk Folder>\platforms\android-24\android.jar -M \\?\<My Project Folder>\android\app\build\intermediates\manifests\full\release\AndroidManifest.xml -S <My Project Folder>\android\app\build\intermediates\res\merged\release -m -J \\?\<My Project Folder>\android\app\build\generated\source\r\release -F <My Project Folder>\android\app\build\intermediates\res\release\resources-release.ap_ -G \\?\<My Project Folder>\android\app\build\intermediates\proguard-rules\release\aapt_rules.txt --custom-package com.beostore -0 apk --output-text-symbols \\?\<My Project Folder>\android\app\build\intermediates\symbols\release --no-version-vectors 

は、それから私は、抑制されたAAPTプロセスから実際のエラーメッセージを、得ました。 私のケースでは、AndroidManifest.xmlにはコンパイラが理解できない値が含まれていますが、あなたのケースでは違うかもしれません。

関連する問題