这是一个很奇怪的问题,而且我已经敲了一天了,因为这不是默认行为。
我有一个AAR项目和模块。这是另一个项目的简化复制和粘贴。默认情况下,Android Studio将输出文件名为module-build_variant.aar的AAR文件。
但是,当我构建此模块时,它是module.aar。奇怪的。
作为记录,我尝试过搜索问题,从命令行构建,遍历build.gradle文件。娜达
我希望这个项目像其他项目一样构建,并正确命名为AAR文件。
项目build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
apply from: '../sharedConf/versions.gradle'
addRepos(repositories)
dependencies {
classpath deps.android_gradle_plugin
classpath deps.kotlin_plugin
}
}
allprojects {
addRepos(repositories)
}
task clean(type: Delete) {
delete rootProject.buildDir
模块build.gradle
// Import shared gradle settings
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
// Every shared preference among the Android projects
def versionPropsFile = file('../../sharedConf/versions.gradle')
if (!versionPropsFile.canRead()) {
throw new GradleException('versions.gradle doesnt exist')
}
compileSdkVersion build_versions.target_sdk
buildToolsVersion build_versions.build_tools
// The version of the product. Generated by the build.py script
String version = build_versions.version_name
if (project.hasProperty("ms_version")) {
version = "$ms_version"
}
defaultConfig {
minSdkVersion build_versions.min_sdk
targetSdkVersion build_versions.target_sdk
versionName version.trim()
versionCode build_versions.version_code
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {
abortOnError true
}
signingConfigs {
release {
<SNIP>
}
}
sourceSets {
main.java.srcDirs += '../../***/***/src/main/java'
main.java.srcDirs += '../../Infra/infra/src/main/java'
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation deps.kotlin_stdlib
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha01'
implementation 'androidx.preference:preference:1.1.0-alpha04'
implementation 'com.google.android.material:material:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// OK_HTTP_3
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.8.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
}
版本.gradle
def versions = [:]
versions.android_gradle_plugin = "3.3.2"
versions.kotlin = "1.3.21"
def build_versions = [:]
build_versions.version_name = "7.0"
build_versions.version_code = 7
build_versions.min_sdk = 16
build_versions.target_sdk = 29
build_versions.build_tools = "29.0.2"
ext.build_versions = build_versions
def deps = [:]
deps.android_gradle_plugin = "com.android.tools.build:gradle:$versions.android_gradle_plugin"
deps.kotlin_plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"
deps.kotlin_stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin"
ext.deps = deps
def addRepos(RepositoryHandler handler) {
handler.google()
handler.jcenter()
handler.mavenCentral()
handler.flatDir {
dirs 'libs'
}
}
ext.addRepos = this.&addRepos
如果我不得不猜测的话,在某些情况下,AS将构建单个AAR。也许它正在合并构建变体(尝试Debug minified = false)或类似的东西。
最佳答案
原因是gradle-wrapper.properties中的版本不正确。
在该项目中为5.4.1。还原为4.10.1时,它会正确生成。
请注意,这里我以最宽松,最不准确的方式使用了不正确的内容。我没有收到错误或通知。功能只是改变了。您可能会发现gradle和gradle插件不匹配会破坏构建。
关于android - AAR工件没有构建变体后缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58929623/