这是一个在SO上讨论得很热烈的问题,但我在搜索了几个小时后还是找不到最新的解决方案。可惜我不能在任何地方添加评论。
我使用gradle-android-git-version插件在build.gradle中设置versionName和versionCode。现在我想将构建输出文件的名称从my-sdk-release.aar
更改为my-sdk-release-versionName.aar
或类似名称。
但是,由于未找到属性,因此提出的任何解决方案都不起作用。关于这个问题的文档似乎也已经过时了,OutputFile早就被弃用了。
使用newest one可以找到:
afterEvaluate {
android.libraryVariants.all { variant ->
variant.variantData.outputFactory.apkDataList.each { apkData ->
if (apkData.outputFileName.endsWith('.aar')) {
apkData.outputFileName = "${project.name}-${buildType.name}-anything-you-want.aar"
}
}
}
}
在Gradle 7.3.3上显示错误No such property: outputFactory for class: com.android.build.gradle.internal.variant.LibraryVariantData
我的build.gradle如下:
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
id 'com.gladed.androidgitversion' version '0.4.14'
}
android {
compileSdk 33
defaultConfig {
minSdk 24
targetSdk 33
versionName androidGitVersion.name()
versionCode androidGitVersion.code()
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
kotlinOptions {
freeCompilerArgs += [
'-opt-in=kotlin.RequiresOptIn',
'-Xexplicit-api=strict'
]
}
afterEvaluate {
android.libraryVariants.all { variant ->
variant.variantData.outputFactory.apkDataList.each { apkData ->
if (apkData.outputFileName.endsWith('.aar')) {
apkData.outputFileName = "${project.name}-${buildType.name}-anything-you-want.aar"
}
}
}
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'no.nordicsemi.android:ble-ktx:2.5.1'
implementation 'no.nordicsemi.android.support.v18:scanner:1.5.1'
implementation 'commons-codec:commons-codec:1.13'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.2'
testImplementation 'junit:junit:4.13.2'
}
我做错了什么?
1条答案
按热度按时间3hvapo4f1#
apkDataList
,顾名思义,很可能使用building apk。