如果你的库已经配置为 Android 库(即在 build.gradle 文件中使用 apply plugin: 'com.android.library'
语句),则它在构建时会生成一个 .aar 文件。它将出现在你的模块目录下的 build/outputs/aar/ 目录中。
你可以在“文件”菜单中选择“新建模块”,然后选择“Android Library”类型来创建一个新的 Android 库。
如果你仍然无法看到你的 aar
文件,请选择 Build > Rebuild Project
。
aar
文件,我必须在Android Studio中执行“Build > Rebuild Project”操作。仅仅运行、调试或构建APK无法为我生成aar
文件。 - Adam Johns./gradlew moduleName:assembleRelease
。 - Sameer J如果您将一个模块定义为Android库项目,则该项目的build/outputs/aar/
目录中将获取所有构建风格(默认情况下为debug和release)的.aar文件。
your-library-project
|- build
|- outputs
|- aar
|- appframework-debug.aar
- appframework-release.aar
如果这些文件不存在,请开始构建。gradlew assemble
针对 macOS 用户
./gradlew assemble
一个图书馆项目有一个包含apply plugin: com.android.library
的build.gradle
文件。要将此库打包为.aar
文件进行引用,您需要定义一些属性,例如包和版本。
示例库的build.gradle
文件(此示例包括发布版混淆):
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName "0.1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
在你的应用项目中,你可以将这个 .aar
文件放入 libs
文件夹,然后更新 build.gradle
文件来引用这个库。下面是一个示例:
apply plugin: 'com.android.application'
repositories {
mavenCentral()
flatDir {
dirs 'libs' //this way we can find the .aar file in libs folder
}
}
android {
compileSdkVersion 21
buildToolsVersion "21.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
versionCode 4
versionName "0.4.0"
applicationId "yourdomain.yourpackage"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
}
}
}
dependencies {
compile 'be.hcpl.android.appframework:appframework:0.1.0@aar'
}
关于在Gradle中引用本地依赖文件的替代选项,请参见:http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project
如果您需要在组织内共享这些 .aar
文件,请查看 Maven。关于此主题的详细介绍可以在以下链接中找到:https://web.archive.org/web/20141002122437/http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive-library-aar-across
aar 文件只是一个具有其他扩展名和特定内容的 .zip
文件。有关详细信息,请参阅 有关 aar 格式的链接。
gradlew assemble
- 那解决了我遇到的问题。 - Farbod Salamat-Zadehgradlew
是位于项目顶层目录中的脚本。 - CodeClown42就像用户hcpl所说的那样,但如果您不想担心库的版本,可以这样做:
dependencies {
compile(name:'mylibrary', ext:'aar')
}
每次更新版本都有点烦人,这样做也使得不用担心命名空间更容易。
创建 AAR
在创建时,请按照以下步骤进行。
文件 -> 新建 -> 新模块 -> Android Library 并创建
.
生成 AAR
在 Android Studio 的顶部右侧窗格中转到 gradle,然后按照以下步骤操作
Gradle -> 下拉库名称 -> tasks -> build -> assemble 或 assemble release
AAR 将在 build/outputs/aar/
中生成
但如果我们希望在项目目录中的特定文件夹中生成具有所需名称的 AAR,则可以修改您的应用级 build.gradle
如下:
defaultConfig {
minSdkVersion 26
targetSdkVersion 28
versionCode System.getenv("BUILD_NUMBER") as Integer ?: 1
versionName "0.0.${versionCode}"
libraryVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "/../../../../release/" + ("your_recommended_name.aar")
}
}
}
现在它将在项目目录中创建名为“release”的文件夹,其中将包含AAR。
更新的答案
在最新版本中不支持特定路径。请在库的 build.gradle 中添加以下代码并重建项目。重建"aar"后,从Android更改项目结构到Project->导航到您的library->build->outputs->aar。
android {
defaultConfig {
minSdkVersion ..
targetSdkVersion ..
versionCode ...
versionName "1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}
libraryVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "${archivesBaseName}_${variant.name}_${defaultConfig.versionName}.aar"
}
}}
要将“aar”导入项目,请查看下面的链接。
...
dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
...
构建 ---> 构建 bundle/apk
.aar 文件将会在 build/outputs/aar 文件夹中生成。
.jar
是通过应用插件apply plugin: 'java-library'
生成的
.aar
是通过应用插件apply plugin: 'com.android.library'
生成的
File -> New -> New Module... -> Android Library
aar
文件。 ./gradlew publishReleasePublicationToMavenLocal
这将在<module-dir>/build/output/aar
目录中生成一个aar
文件。
现在您也可以在其他本地项目中使用此库。在您想要使用此aar
模块的项目gradle
中添加它即可。
implementation fileTree(dir: '<location-to-library>/build/outputs/aar/', include: ['*.aar', '*.jar'], exclude: [])
implementation files('libs/aar-file.aar')
编辑 我还有一个复杂的问题 - 我已经将minifyEnabled设置为库模块。