使用fastlane gradle时如何指定输出.apk文件路径?

问题描述 投票:0回答:4

我的应用程序有不同的产品风格,我使用 fastlane 构建它们。这是我的快速文件:

default_platform(:android)

platform :android do

  desc "Release apk with different urls"
  lane :release do
    gradle(
      task: "assemble",
      build_type: "release",
      flavor: "flavorname",
      print_command: true,
      properties: {
        "android.injected.signing.store.file" => "Key.jks",
        "android.injected.signing.store.password" => "KeyPass",
        "android.injected.signing.key.alias" => "KeyAlias",
        "android.injected.signing.key.password" => "KeyPass"
      }
    )

  end

end

问题是在项目目录中创建了apk文件。

(项目名称/应用程序/构建/输出/apk/flavorname/release/app-flavorname-release.apk)

如何将此apk文件自动移动到我的桌面?

fastlane
4个回答
12
投票

我在 gradle 调用下使用以下内容:

lane :release do        
    gradle(...)

    APK_LOCATION = "#{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}"        
    sh("mv #{APK_LOCATION} ~/Desktop/")
end

使用变量的优点是您将能够使用相同的代码来发布和调试 apk。

干杯。


4
投票

gradle
似乎没有指定输出的选项。 我建议你在 gradle 完成后添加一个命令行,将这个
.apk
移动到桌面或任何你想要的地方。

sh "mv ../app/build/outputs/apk/release/app-release.apk path/to/Desktop"

3
投票

您还可以使用 fastlane 操作 copy_artifacts 而不是

mv

lane :release do
  gradle(...)

  copy_artifacts(
    artifacts: ['*/build/outputs/apk/**/*.apk'],
    target_path: '~/Desktop/'
  )
end

Wilcard

*/build/outputs/apk/**/*.apk
将适用于任何构建类型、风格应用程序模块名称。

或者正如上面@janpio所说,你可以使用变量

GRADLE_APK_OUTPUT_PATH
:

lane :release do
  gradle(...)

  copy_artifacts(
    artifacts: [lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]],
    target_path: '~/Desktop/'
  )
end

0
投票

您可以在属性中添加archivesBaseName。输出是 app_release.apk

lane :release do
      build_android_app(
        task: "assemble",
        build_type: "Release",
        print_command: false,
        properties: {
          "android.injected.signing.store.file" => "Key.jks",
        "android.injected.signing.store.password" => "KeyPass",
        "android.injected.signing.key.alias" => "KeyAlias",
        "android.injected.signing.key.password" => "KeyPass",
         "archivesBaseName" => "app",

        }
      )
© www.soinside.com 2019 - 2024. All rights reserved.