在AGP 7.0.0-alpha15 15之前,我可以更改应用程序的版本代码,例如
android {
defaultConfig {
applicationVariants.all {
if (buildType.name == "debug") {
outputs.forEach { output ->
(output as? com.android.build.gradle.internal.api.ApkVariantOutputImpl)?.versionCodeOverride = 1
}
}
}
}
}applicationVariants似乎失踪后,AGP 7.0.0-字母15,如何改变它?
PS:平原区似乎没问题,上面是科特林。
编辑
有了below的回答,我就能够覆盖构建中的版本代码:
android {
androidComponents.onVariants { appVariant ->
if (appVariant.buildType == "release") {
appVariant.outputs.forEach {
it.versionCode.set(1)
}
}
}
}发布于 2021-05-06 07:31:50
变体API将更改为AGP 7.0.0中一个延迟评估的模型,看起来Alpha 15现在已经删除了这方面的旧API。接下来,您将需要使用androidComponents DSL,它允许访问变体。不过,我不确定您是否能够像这样重写版本代码。有关更多信息,请访问beforeVariants和onVariants:
android {
androidComponents.beforeVariants { variantBuilder ->
// Callback before variants are built. Can be modified, but doesn't allow access to outputs
}
androidComponents.onVariants { variant ->
// Callback after variants are built. Apparently it's read-only access at this point, but outputs are available here
println(variant.outputs)
}
}发布于 2022-03-10 07:04:00
在Java插件代码中,可以设置版本代码&命名如下:
class SomePlugin implements Plugin<Project> {
@Override
@SuppressWarnings("UnstableApiUsage")
public void apply(@NotNull Project project) {
ApplicationAndroidComponentsExtension androidComponents = project.getExtensions()
.getByType(ApplicationAndroidComponentsExtension.class);
androidComponents.finalizeDsl(extension -> {
for (AndroidSourceSet sourceSet : extension.getSourceSets()) {
System.out.println(sourceSet.getName());
}
});
int versionCode = 1;
String versionName = "1.0.0";
VariantSelector selector = androidComponents.selector().all();
androidComponents.onVariants(selector, variant -> {
for (VariantOutput variantOutput : variant.getOutputs()) {
variantOutput.getVersionName().set( versionName );
variantOutput.getVersionCode().set( versionCode );
System.out.println(">>>> " +
variant.getName() + " " +
variantOutput.getVersionCode().get() + " / " +
variantOutput.getVersionName().get());
}
});
}
}finalizeDsl发生在onVariants之前。
发布于 2022-10-20 04:31:52
android {
// ..
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}
}
// ..
}
androidComponents {
onVariants(selector().all()) { appVariant ->
for (VariantOutput variantOutput : appVariant.getOutputs()) {
def versionCodes = ['[armeabi]' : 100000,
'[armeabi-v7a]' : 200000,
'[x86]' : 300000,
'[arm64-v8a]' : 400000,
'[x86_64]' : 500000]
String abi = variantOutput.getFilters().identifier;
Integer version = versionCodes.get(abi) + versionCode
if (appVariant.getName().contains("Debug")) {
version += 10000
}
variantOutput.getVersionCode().set(version);
}
}
}
dependencies {
// ...
}https://stackoverflow.com/questions/67396532
复制相似问题