还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。因此,本指南将侧重论述创建 Android 库。还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。因此,本指南将侧重论述创建 Android 库。



https://github.com/baiqiantao/aartest.githttps://github.com/baiqiantao/aartest.gitD:\aartestD:\aartest//********************************************************************** 打包发布
apply plugin: ‘maven‘
uploadArchives {
def GITHUB_REPO_PATH = "D:\\aartest" // 从Github上clone下来的项目的本地地址,也是要保存的生成的aar目录的地址
repositories.mavenDeployer {
repository(url: "file://${file(GITHUB_REPO_PATH).absolutePath}")
pom.project { //引用时的格式为【implementation ‘com.bqt.aartest:blibrary:1.0.0‘】
groupId ‘com.bqt.aartest‘
artifactId ‘blibrary‘
version ‘1.0.0‘
}
}
}
// 和源代码一起打包
task androidSourcesJar(type: Jar) {
classifier = ‘sources‘
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
}//********************************************************************** 打包发布apply plugin: ‘maven‘uploadArchives { def GITHUB_REPO_PATH = "D:\\aartest" // 从Github上clone下来的项目的本地地址,也是要保存的生成的aar目录的地址 repositories.mavenDeployer { repository(url: "file://${file(GITHUB_REPO_PATH).absolutePath}") pom.project { //引用时的格式为【implementation ‘com.bqt.aartest:blibrary:1.0.0‘】 groupId ‘com.bqt.aartest‘ artifactId ‘blibrary‘ version ‘1.0.0‘ } }}// 和源代码一起打包task androidSourcesJar(type: Jar) { classifier = ‘sources‘ from android.sourceSets.main.java.sourceFiles}artifacts { archives androidSourcesJar}
gradlew uploadArchivesx
gradlew uploadArchivesExecuting tasks: [uploadArchives]
...
BUILD SUCCESSFUL in 6s
26 actionable tasks: 23 executed, 3 up-to-date
16:18:38: Task execution finished ‘uploadArchives‘.x
Executing tasks: [uploadArchives]...BUILD SUCCESSFUL in 6s26 actionable tasks: 23 executed, 3 up-to-date16:18:38: Task execution finished ‘uploadArchives‘.
allprojects {
repositories {
...
maven { url "https://raw.githubusercontent.com/baiqiantao/aartest/master" } //baiqiantao 为用户名,aartest为项目名,其他为固定值
}
}allprojects { repositories { ... maven { url "https://raw.githubusercontent.com/baiqiantao/aartest/master" } //baiqiantao 为用户名,aartest为项目名,其他为固定值 }}implementation ‘com.bqt.aartest:blibrary:1.0.0‘implementation ‘com.bqt.aartest:blibrary:1.0.0‘startActivity(new Intent(this, AARActivity.class));//库中的组件
AARUtils.showToast(this, "库中的方法");
imageView.setImageResource(R.drawable.icon_aar);//库中的资源x
startActivity(new Intent(this, AARActivity.class));//库中的组件AARUtils.showToast(this, "库中的方法");imageView.setImageResource(R.drawable.icon_aar);//库中的资源include ‘:app‘, ‘:my-library-module‘include ‘:app‘, ‘:my-library-module‘implementation project(":my-library-module")implementation project(":my-library-module")ps:可能你会遇到类似如下错误提示:
Manifest merger failed : Attribute application@icon value=(@drawable/icon) from AndroidManifest.xml:6:9-38
is also present at [:testaar] AndroidManifest.xml:13:9-43 value=(@mipmap/ic_launcher).
Suggestion: add ‘tools:replace="android:icon"‘ to <application> element at AndroidManifest.xml:5:5-17:19 to override.
这个原因就是合并清单文件时 merger 冲突,按照提示修改即可。ps:可能你会遇到类似如下错误提示:Manifest merger failed : Attribute application value=(/icon) from AndroidManifest.xml:6:9-38 is also present at [:testaar] AndroidManifest.xml:13:9-43 value=(/ic_launcher). Suggestion: add ‘tools:replace="android:icon"‘ to <application> element at AndroidManifest.xml:5:5-17:19 to override.这个原因就是合并清单文件时 merger 冲突,按照提示修改即可。<resources>
<public name="mylib_app_name" type="string"/>
<public name="mylib_public_string" type="string"/>
</resources><resources> <public name="mylib_app_name" type="string"/> <public name="mylib_public_string" type="string"/></resources>android {
defaultConfig {
consumerProguardFiles ‘lib-proguard-rules.txt‘
}
}android { defaultConfig { consumerProguardFiles ‘lib-proguard-rules.txt‘ }}/AndroidManifest.xml
/classes.jar
/res/
/R.txt
/public.txt/AndroidManifest.xml/classes.jar/res//R.txt/public.txt/assets/
/libs/name.jar
/jni/abi_name/name.so (其中 abi 名称 是 Android 支持的 ABI 之一)
/proguard.txt
/lint.jar/assets//libs/name.jar/jni/abi_name/name.so (其中 abi 名称 是 Android 支持的 ABI 之一)/proguard.txt/lint.jar原文:https://www.cnblogs.com/baiqiantao/p/9391707.html