2016-07-31 187 views
2

当我尝试按照https://facebook.github.io/react-native/docs/signed-apk-android.html中的文档生成反应原生应用程序的apk文件时,我收到了上述标题中描述的错误。我已经检查过,以确保密钥库的别名和密码正确,所以我不确定问题所在。我还确保在生成密钥库时输入了所需的全部信息。React Native:尝试生成apk文件时“无法从密钥库读取密钥”

下面是我在android目录下运行命令gradlew assembleRelease得到的输出的堆栈跟踪。

:app:packageRelease (Thread[main,5,main]) started. 
:app:packageRelease 
Executing task ':app:packageRelease' (up-to-date check took 0.092 secs) due to: 
    No history is available. 
All input files are considered out-of-date for incremental task ':app:packageRel 
ease'. 
:app:packageRelease FAILED 
:app:packageRelease (Thread[main,5,main]) completed. Took 0.151 secs. 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:packageRelease'. 
> Failed to read key from keystore 

* Try: 
Run with --debug option to get more log output. 

* Exception is: 
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:pac 
kageRelease'. 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex 
ecuteActions(ExecuteActionsTaskExecuter.java:69) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex 
ecute(ExecuteActionsTaskExecuter.java:46) 
     at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExec 
uter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
     at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.exec 
ute(SkipUpToDateTaskExecuter.java:64) 
     at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execut 
e(ValidatingTaskExecuter.java:58) 
     at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecu 
ter.execute(SkipEmptySourceFilesTaskExecuter.java:42) 
     at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter 
.execute(SkipTaskWithNoActionsExecuter.java:52) 
     at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execut 
e(SkipOnlyIfTaskExecuter.java:53) 
     at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter 
.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
     at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailur 
e(AbstractTask.java:310) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorW 
orker.executeTask(AbstractTaskPlanExecutor.java:79) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorW 
orker.processTask(AbstractTaskPlanExecutor.java:63) 
     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorW 
orker.run(AbstractTaskPlanExecutor.java:51) 
     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(Defaul 
tTaskPlanExecutor.java:23) 
     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(Defau 
ltTaskGraphExecuter.java:88) 
     at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTask 
ExecutionAction.java:37) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute 
r.java:62) 
     at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExec 
uter.java:23) 
     at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecu 
ter.java:68) 
     at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildEx 
ecutionAction.java:32) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute 
r.java:62) 
     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute 
r.java:55) 
     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default 
GradleLauncher.java:149) 
     at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle 
Launcher.java:106) 
     at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun 
cher.java:86) 
     at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildCon 
troller.run(InProcessBuildActionExecuter.java:90) 
     at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(Exe 
cuteBuildActionRunner.java:28) 
     at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildA 
ctionRunner.java:35) 
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce 
ssBuildActionExecuter.java:41) 
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce 
ssBuildActionExecuter.java:28) 
     at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.exe 
cute(DaemonUsageSuggestingBuildActionExecuter.java:50) 
     at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.exe 
cute(DaemonUsageSuggestingBuildActionExecuter.java:27) 
     at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:40) 
     at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.jav 
a:169) 
     at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction. 
execute(CommandLineActionFactory.java:237) 
     at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction. 
execute(CommandLineActionFactory.java:210) 
     at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRunti 
meValidationAction.java:35) 
     at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRunti 
meValidationAction.java:24) 
     at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(
CommandLineActionFactory.java:206) 
     at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(
CommandLineActionFactory.java:169) 
     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep 
ortingAction.java:33) 
     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep 
ortingAction.java:22) 
     at org.gradle.launcher.Main.doAction(Main.java:33) 
     at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
     at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBoots 
trap.java:54) 
     at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.j 
ava:35) 
     at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 
     at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.ja 
va:30) 
     at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127) 
     at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) 
Caused by: org.gradle.tooling.BuildException: Failed to read key from keystore 
     at com.android.build.gradle.tasks.PackageApplication.doFullTaskAction(Pa 
ckageApplication.java:226) 
     at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(In 
crementalTask.java:79) 
     at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskF 
actory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243) 

     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskF 
actory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskF 
actory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230) 
     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskF 
actory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex 
ecuteAction(ExecuteActionsTaskExecuter.java:80) 
     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex 
ecuteActions(ExecuteActionsTaskExecuter.java:61) 
     ... 49 more 
Caused by: com.android.builder.packaging.SigningException: Failed to read key fr 
om keystore 
     at com.android.builder.core.AndroidBuilder.packageApk(AndroidBuilder.jav 
a:1775) 
     at com.android.build.gradle.tasks.PackageApplication.doFullTaskAction(Pa 
ckageApplication.java:206) 
     ... 57 more 


BUILD FAILED 

我无法理解堆栈跟踪。在我的Android/app文件夹我的build.gradle文件的

部分如下图所示:

signingConfigs { 
      release { 
       storeFile file(MYAPP_RELEASE_STORE_FILE) 
       storePassword MYAPP_RELEASE_STORE_PASSWORD 
       keyAlias MYAPP_RELEASE_KEY_ALIAS 
       keyPassword MYAPP_RELEASE_KEY_PASSWORD 
      } 
     } 
    splits { 
     abi { 
      reset() 
      enable enableSeparateBuildPerCPUArchitecture 
      universalApk false // If true, also generate a universal APK 
      include "armeabi-v7a", "x86" 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled enableProguardInReleaseBuilds 
      proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 
      signingConfig signingConfigs.release 
     } 
    } 

而gradle.properties在我的android文件夹,文件如下所示:

android.useDeprecatedNdk=true 
MYAPP_RELEASE_STORE_FILE=my-key.keystore 
MYAPP_RELEASE_KEY_ALIAS=lew     
MYAPP_RELEASE_STORE_PASSWORD= **** 
MYAPP_RELEASE_KEY_PASSWORD= **** 
+0

你把.keystore文件放在哪里? –

+0

我的密钥库文件位于我的项目文件夹的android/app目录中 –

回答

0

运行:

keytool -list -keystore my-key.keystore 

并检查ALIAS是否为lew。