Fastlane gradle命令-未传递属性

8cdiaqws  于 2022-12-19  发布在  其他
关注(0)|答案(3)|浏览(171)

我创建了一个fastlane任务,用于上传到Play商店,如下所示:

lane :DEPLOY_BETA do

  gradle(task: "clean")

  version_codes = google_play_track_version_codes(
      package_name: "",
      json_key: "play_store_service_account_key.json",
  )

  gradle(
    task: "assemble",
    flavor: "World",
    build_type: "Release",
    properties: { "versionCode" => 100 }
  )

  apk_path = Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
  supply(
    apk: apk_path,
    json_key: "play_store_service_account_key.json",
    package_name: "",
    track: "beta",
    skip_upload_metadata: true,
    validate_only: true,
    skip_upload_images: true,
    skip_upload_screenshots: true
    )

  end

问题是属性versionCode没有覆盖flavor中指定的versionCode(也没有defaultConfig)。这是fastlane中的bug吗?如果我根本没有在build.gradle中设置versionCode,它只会添加没有versionCode,fastlane供应将失败。
有人能帮我吗?

7z5jn7bk

7z5jn7bk1#

我也遇到了同样的问题。你必须在build.gradle中使用它们,就像这样:
versionCode project.hasProperty('versionCode') ? project.property('versionCode') as int : 1 versionName project.hasProperty('versionName') ? project.property('versionName') : "No versionName"
我在original pull request中发现了这条注解。看起来gradle没有直接公开这些内容,我们需要手动分配它们(根据这条注解)。

s8vozzvw

s8vozzvw2#

为了确认此行为,您似乎必须在build.gradle中定义versionName和/或versionCode,如@sebleclerc所述。

# android/app/build.gradle
android {
    ....
    defaultConfig {
        // Fastlane will handle version
        versionName project.hasProperty('versionName') ? project.property('versionName') : "0.0.0"
        versionCode 0
    }
    ....
}
# android/fastlane/Fastfile
platform :android do
  lane :dev do
    code = google_play_track_version_codes(package_name: "my.package.name")
    code_incremented = code[0] + 1
    increment_version_code(
      gradle_file_path: "app/build.gradle", version_code: code_incremented
    )
    gradle(
      task: "clean assemble",
      flavor: "Development",
      build_type: "Release",
      properties: {
        "versionName" => ENV['APP_VERSION'],
      }
    )
    upload_to_play_store(
      package_name: "my.package.name",
    )
  end
end
8yparm6h

8yparm6h3#

老问题,但今天遇到了同样的问题,并发现新的Gradle版本导致了这个问题。
版本7.3.0和更高版本存在此问题。您可以使用以下版本修复此问题,我在项目的build. gradle中使用了classpath 'com.android.tools.build:gradle:7.1.3'
之后,您可以用途:

gradle(
   task: 'assemble',
   build_type: 'Release',
   flags: "--warning-mode none -x lint",
   properties: {
       "android.injected.version.code" => versionCode,
       "android.injected.version.name" => versionName,
   }
)

希望这对某人有帮助!

相关问题