我想在Android Studio中为我的库创建一个aar文件,我会使用一个jar选项,但我的库有资源。
知道如何从库中创建aar文件吗?
如果你的库被设置为Android库(即它在构建中使用apply plugin: 'com.android.library'语句)。Gradle文件),它将在构建时输出一个.aar。它将显示在模块目录中的建立/输出/ aar /目录中。
apply plugin: 'com.android.library'
你可以选择“Android Library"输入文件>新建模块创建一个新的Android库。
如果你仍然看不到你的aar文件,选择Build > Rebuild Project。
aar
Build > Rebuild Project
如果你有一个定义为android库项目的模块,你会在该项目的build/outputs/aar/目录中获得所有构建风格(默认为调试和发布)的.aar文件。
build/outputs/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文件的库,你必须定义一些属性,如package和version。
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' } } }
在你的app项目中,你可以将这个.aar文件放到libs文件夹中,并使用下面的例子更新build.gradle文件来引用这个库:
libs
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格式的。
.zip
就像用户HCPL说的,但如果你不想担心库的版本,你可以这样做:
dependencies { compile(name:'mylibrary', ext:'aar') }
因为每次都要更新版本有点烦人。此外,这样也可以更容易地避免担心名称空间的问题。
btw @aar没有传递依赖。你需要一个参数来打开它: 使用gradle无法解析aar库的传递依赖项 < / p >
在遵循Hcpl的答案在同一个帖子里中提到的第一和第二步之后,我们在our-android-app-project-based-on-gradle/app/build中添加了' *。Aar '], dir: 'libs'。Gradle文件如下所示:
... dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') ...
我们的gradle版本是com.android.tools.build:gradle:3.2.1
创建AAR
在创建时遵循以下步骤。
File->New->New Module->Android Library and create。
File->New->New Module->Android Library and create
生成AAR
按照以下步骤在android studio的右上方窗格转到gradle。
Gradle->Drop down library name -> tasks-> build-> assemble or assemble release
AAR将在建立/输出/ 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。
更新后的答案
在最新版本中不支持特定路径。请在库的构建中添加以下代码。Gradle和重建项目。在重建“__abc0”之后,将项目结构从Android更改为project ->导航到你的library→构建→输出→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"进入项目,检查下面的链接。
如何手动包含外部aar包使用Gradle for Android .
最终得到解决方案在这里- https://stackoverflow.com/a/49663101/9640177
implementation files('libs/aar-file.aar')
<强>编辑 我有一个更复杂的问题-我为库模块设置了minifyEnabled为true
[JAR vs AAR]
.jar由apply plugin: 'java-library'生成
.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文件。
<module-dir>/build/output/aar
现在您也可以在其他本地项目中使用这个库。将此添加到你想在其中使用这个aar模块的项目gradle中
gradle
implementation fileTree(dir: '<location-to-library>/build/outputs/aar/', include: ['*.aar', '*.jar'], exclude: [])
构建——比;构建包/ apk
.aar文件将在建立/输出/ aar文件夹中生成。