【问题标题】:how to fix fastlane error: Keystore file 'keystore.jks' not found for signing config 'externalOverride'.?如何修复 fastlane 错误:找不到用于签名配置“externalOverride”的密钥库文件“keystore.jks”。?
【发布时间】:2019-09-04 17:20:45
【问题描述】:

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

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

  • 出了什么问题: 任务 ':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

【问题讨论】:

  • gradle在app/keystore.jks中搜索“android.injected.signing.store.file”=>“keystore.jks”
  • @jordiz 是的,我通过添加孔路径来解决它

标签: java android deployment keystore fastlane


【解决方案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 变量。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      Flutter + Fastlane + GitHub Actions

      我遇到了同样的问题,经过反复试验(因为我在互联网上找不到解决这个特定问题的方法),事实证明,在我的情况下,唯一可行的方法是将./android/fastlane/./android/app/fastlane/ 两个文件夹中的密钥库文件。

      那是因为我的 Fastlane 配置位于 ./android/fastlane/ 文件夹中,但是,当您运行 build_android_app / gradle 任务时,它会尝试获取密钥库文件./android/app/ 文件夹默认情况下,你不能告诉它,除非你使用绝对路径(不是一个好习惯),因为 Fastlane 任务无法解析相对路径。此外,如果我从./android/fastlane/ 文件夹中删除密钥库文件,它会抱怨,即使它存在于./android/app/fastlane/ 中。

      【讨论】:

        猜你喜欢
        • 2016-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 2021-01-21
        • 1970-01-01
        • 2016-06-25
        • 1970-01-01
        相关资源
        最近更新 更多