我创建了一个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来解决我的项目相同的问题。我尝试了以下解决方法:
- 在我的build.gradle文件中,我将默认配置更改为从gradle.properties文件读取:
defaultConfig {
......
versionCode = rootProject.ext.get("versionCode").toString().toInt()
versionName = rootProject.ext.get("versionName").toString()
......
}
- 在我的gradle.properties文件中(存在于根目录中(,我定义了这两个属性的默认值:
versionCode=1
versionName=debug
- 然后使用标志来修改这些属性的汇集/捆绑命令将生成具有必需值的APK/AAB(2,test(: :
./gradlew assembleMobileAlphaDebug -PversionCode=2 -PversionName=test
请注意,我在所有位置都使用版本码和版本名称为属性名称,属性名称均应匹配。