現(xiàn)在公司安卓項(xiàng)目比較多变逃,想把重復(fù)的粗合、常用的類抽離出來(lái)作為一個(gè)類庫(kù)郑气。
參考maven文檔及網(wǎng)上一些參考文檔幅垮,簡(jiǎn)單的整理如下
創(chuàng)建公共庫(kù)
- 新建一個(gè)項(xiàng)目,然后添加一個(gè)需要做為公共庫(kù)的Module尾组。
- 在這個(gè)module的gradle中添加代碼:
apply plugin: 'maven'
def getRepositoryUsername() {
return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate {project ->
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
repository(url:"http://172.16.7.251:8081/nexus/content/repositories/com.jjshome.mobile") {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
}
}
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
}
}
這里的URL沒(méi)有使用 releases的repositories(一般為http://172.16.7.251:8081/nexus/content/repositories/releases/ )忙芒, 而是自定義了一個(gè)MobileRepository,是因?yàn)樯蟼鱮eleases的地址gradle報(bào)無(wú)法連接的錯(cuò)誤讳侨,想來(lái)是私服有人設(shè)置了權(quán)限吧呵萨。
- 在這個(gè)module下添加配置文件gradle.properties,添加些屬性
#對(duì)應(yīng)maven的groupId值
GROUP=com.jjshome.mobile
#對(duì)應(yīng)maven的version值
VERSION_NAME=0.0.3
#對(duì)應(yīng)maven的artifactId值
POM_ARTIFACT_ID=jjs-utils
#登錄nexus oss的用戶名
NEXUS_USERNAME=admin
#登錄nexus oss的密碼
NEXUS_PASSWORD=admin123
- 運(yùn)行上傳任務(wù)
項(xiàng)目中引入公共庫(kù)
- 在項(xiàng)目的頂層build.gradle添加私服地址
allprojects {
repositories {
jcenter()
maven {
url "http://172.16.7.251:8081/nexus/content/groups/public/"
}
}
}
- 在需要引用的modle中的build.gradle添加library
dependencies {
compile 'com.jjshome.mobile:jjs-utils:0.0.3'
}
配置中遇到的問(wèn)題
<ul>在maven私服中需要把自己的repositories添加到Public Repositories 的Ordered Group Repositories中
</ul>
<ul>
在編譯上傳自定義的庫(kù)時(shí)注意編譯的sdk版本跨跨,和最低支持的sdk版本潮峦。如果引用的項(xiàng)目中compileSdkVersion的版本比自定義庫(kù)中的低,minSdkVersion的版本比自定義的高勇婴,那么會(huì)編譯失敗忱嘹。
最好是自定義的庫(kù)支持的minSdkVersion要比較低狮荔,compileSdkVersion域蜗、targetSdkVersion也比較低雾叭。
</ul>