如何修复fastlane错误:找不到用于签名配置“ externalOverride”的密钥库文件“ keystore.jks”。

时间:2019-09-04 17:20:45

标签: java android deployment keystore fastlane

fastlane的新手,当我编写用于将应用程序部署到内部测试的命令时,会显示以下错误:

失败:构建失败,并出现异常。

  • 出了什么问题: 任务':app:validateSigningRelease'的执行失败。

      

    找不到用于签名配置“ externalOverride”的密钥库文件“ /Users/rooh/.gradle/daemon/5.1.1/keystore.jks”。

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的见解。

  • https://help.gradle.org

  • 获得更多帮助

在此版本中使用了不推荐使用的Gradle功能,使其与Gradle 6.0不兼容。 使用“ --warning-mode all”来显示各个弃用警告。 参见https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings

似乎出现错误是因为密钥库的位置,我已经将密钥库放在项目的应用程序文件中,我在其他项目中也这样做,并且它的工作正常,但是在此我不知道为什么它不起作用

我也尝试更改密钥库的位置,但仍然

fastfile中的此通道:

desc "Deploy a new internal version to the Google Play Store"
lane :internal do
gradle(task: "clean")


gradle(
  task: "assemble",
  build_type: "Release",
  print_command: false,
  properties: {
    "android.injected.signing.store.file" => "keystore.jks",
    "android.injected.signing.store.password" => "*****",
    "android.injected.signing.key.alias" => "alias",
    "android.injected.signing.key.password" => "*****"
    }

)

changelog = prompt(
text: "Changelog: ",
multi_line_end_keyword: "END"
)


supply(
  track: "internal",
  apk: lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH].to_s
)
upload_to_play_store(track: "internal")
end

2 个答案:

答案 0 :(得分:1)

信息:对于其他用户:

您可以创建多个ENV变量,这对于CI很有用。

build_android_app(
      task: "assemble", 
      build_type: "Release", 
      flavor: "development",
      flags: "--stacktrace",
      print_command: false,
      properties:{
        "android.injected.signing.store.file" => ENV['KEYSTORE_PATH'],
        "android.injected.signing.store.password" => ENV['STORE_PASSWORD'],
        "android.injected.signing.key.alias" => ENV['KEY_ALIAS'],
        "android.injected.signing.key.password" => ENV['KEY_PASSWORD'],
        "org.gradle.java.home" => ENV['JAVA_HOME']
      })

稍后您需要修改.bash_profile并添加ENV变量。

答案 1 :(得分:0)

正如@Rooh Al-mahaba 所说,我必须提供完整文件路径作为 "android.injected.signing.store.file" 的值。

此外,~/ 也不起作用;我需要明确说明完整的文件路径。