还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。因此,本指南将侧重论述创建 Android 库。
还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。因此,本指南将侧重论述创建 Android 库。
https://github.com/baiqiantao/aartest.git
https://github.com/baiqiantao/aartest.git
D:\aartest
D:\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 uploadArchives
x
gradlew uploadArchives
Executing 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 6s
26 actionable tasks: 23 executed, 3 up-to-date
16: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