FastLane Gradle命令 - 属性未通过



我创建了一个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并未覆盖口味中指定的versionCode(也不是DefaultConfig(。这是Fastlane中的错误吗?如果我在build.gradle中不设置versionCode,则只会添加versionCode,而Fastlane电源将失败。

任何人可以在这里帮我吗?

我也有同样的问题。您必须在build.gradle内使用它们,类似的东西:

versionCode project.hasProperty('versionCode') ? project.property('versionCode') as int : 1 versionName project.hasProperty('versionName') ? project.property('versionName') : "No versionName"

我在原始拉的请求中找到了此评论。似乎Gradle不会直接揭露它们,我们需要手动分配它们(根据此评论(。

只是为了确认此行为,似乎您必须在build.gradle中定义版本名称和/或versionCode。

# 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

旧问题,但今天有同样的问题,并确定新的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,
   }
)

希望这对某人有帮助!

我能够使用最新的Gradle包装器7.5,Gradle版本7.4.2来解决我的项目相同的问题。我尝试了以下解决方法:

  1. 在我的build.gradle文件中,我将默认配置更改为从gradle.properties文件读取:
defaultConfig {
        ......
        versionCode = rootProject.ext.get("versionCode").toString().toInt()
        versionName = rootProject.ext.get("versionName").toString()
        ......
}
  1. 在我的gradle.properties文件中(存在于根目录中(,我定义了这两个属性的默认值:
versionCode=1
versionName=debug
  1. 然后使用标志来修改这些属性的汇集/捆绑命令将生成具有必需值的APK/AAB(2,test(:
 ./gradlew assembleMobileAlphaDebug -PversionCode=2 -PversionName=test

请注意,我在所有位置都使用版本码和版本名称为属性名称,属性名称均应匹配。

相关内容

  • 没有找到相关文章

最新更新