Android Studio 配置bintray打包開源打包
在項目的build.gradle 的全局dependences里面配置
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
}
注冊bintray
注意事項:
1、個人賬號注冊地址 https://bintray.com/signup/oss

bintray_image_1.png
2、注冊需要一個國外的郵箱比如gmail
3、新建項目

bintray_image_2.png

bintray_image_3.png
輸入項目名稱,選擇type->maven,Licenses->appache2.0
輸入項目描述
4、拷貝key

bintray_image_4.png
在gradle.properties 里面配置
#倉庫名稱
PROJ_REPO=reactnativehotfix
#包名稱
PROJ_NAME=reactnativehotfix
#群組 PROJ_GROUP:PROJ_ARTIFACTID:PROJ_VERSION 的依賴顯示形式
PROJ_GROUP=com.kye.android
#項目名稱
PROJ_ARTIFACTID=reactnativehotfix
#開源協(xié)議
PROJ_LICENSES=Apache-2.0
#開源標簽
PROJ_LABELS=android
#發(fā)布的版本
PROJ_VERSION=1.0.0
#項目主頁
PROJ_WEBSITEURL=https://github.com/yangyunfeng666/ReactNativeHotFix
#項目的issues主頁
PROJ_ISSUETRACKERURL=https://github.com/yangyunfeng666/ReactNativeHotFix/issues
#項目版本git地址
PROJ_VCSURL=https://github.com/yangyunfeng666/ReactNativeHotFix.git
#項目描述
PROJ_DESCRIPTION=reactnative hot fix for android
#創(chuàng)作作者id 名稱
DEVELOPER_ID=yangjaker
#bintray 登陸名稱
DEVELOPER_NAME=jakercode
#bintray 登陸郵箱
DEVELOPER_EMAIL=jakercode@gmail.com
在項目local.propertise 里面配置 binary 用戶和key
BINTRAY_USER=xxxx
BINTRAY_KEY=xxxx
這里BINTRAY_USER 是你的用戶名稱,比如我的jakercode,BINTRAY_KEY 就是我們在注冊完成時候,拷貝的API key,為何我們放在在這個文件里面是因為,你不可能把這個文件也發(fā)布到git上面吧
在你需要打包的module目錄下新建 bintray.gradle文件 里面內(nèi)容如下
project.archivesBaseName = PROJ_ARTIFACTID
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
group = PROJ_GROUP //這個gruop很重要,參考 compile 'groupId:artifactId:version' groupId就是這個,artifactId就是包名,version就是頂部那個
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'//jar
// Add your description here
name PROJ_DESCRIPTION
url PROJ_WEBSITEURL
// Set your license
version PROJ_VERSION
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id DEVELOPER_ID //your user ID
name DEVELOPER_NAME //your name
email DEVELOPER_EMAIL//your email
}
}
scm {
connection PROJ_VCSURL
developerConnection PROJ_VCSURL
url PROJ_WEBSITEURL
}
}
}
}
}
// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
// 生成jarDoc的task,不需要修改。
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
// destinationDir = file("../javadoc/")
failOnError false // 忽略注釋語法錯誤,如果用jdk1.8你的注釋寫的不規(guī)范就編譯不過。
}
// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("BINTRAY_USER")
key = properties.getProperty("BINTRAY_KEY")
configurations = ['archives']
pkg {
repo = PROJ_REPO //發(fā)布到Bintray的哪個倉庫,這個就是第一步時你在bintray網(wǎng)站建立的倉庫名,若這倉庫不存在,則會報錯
name = PROJ_NAME //發(fā)布到Bintray上的名字,這個是顯示在bintray倉庫中的項目名字,與包名可同可不同,若倉庫沒有這個項目文件夾,則會自動創(chuàng)建
desc = PROJ_DESCRIPTION //項目描述
websiteUrl = PROJ_WEBSITEURL
vcsUrl = PROJ_VCSURL
issueTrackerUrl = PROJ_ISSUETRACKERURL
licenses = ["Apache-2.0"]
labels = ['android'] //標簽
publish = true
publicDownloadNumbers = true
}
javadoc { //jav doc采用utf-8編碼否則會報“GBK的不可映射字符”錯誤
options {
encoding "UTF-8"
charSet 'UTF-8'
}
}
}
打包的格式有2種,一種是aar,一種是jar.jar的格式不能包含module里面的資源文件。
然后在mouble的build.gradle里面最后引入 bintray.gradle文件,和在android {}里面 配置lintOptions檢測
apply plugin: 'com.android.library'
android {
...
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
...
//開源gradle
apply from: './bintray.gradle'
打包
1.在bintray 新建的倉庫里面新建package。

bintray_image_5.png

bintray_image_6.png

bintray_image_7.png
2.在Android studio timinal 運行
./gradlew install
點擊運行Android Studio 的make project ,查看module工程的build目錄下面 outputs/aar 是否生成了aar文件
3.上傳到bintray
./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxx -PdryRun=false

bintray_image_8.png
PbintrayUser 值指用戶的登陸名稱 PbintrayKey 值指API key,當上傳成功后,向jcenter申請

bintray_image_9.png
當然你在沒有申請成功之前,你也可以使用,不過是需要在項目的build.gradle添加你的maven url
allprojects {
repositories {
google()
jcenter()
maven{
url "$rootDir/node_modules/react-native/android"
}
//新增url
maven{
url "https://dl.bintray.com/jakercode/reactnativehotfix"
}
}
你的版本在哪里,怎么依賴呢,如下圖就是依賴關(guān)系,然后在你需要的地方依賴就可以使用了

bintray_image_10.png
dependencies {
implementation 'com.kye.android:reactnativehotfix:1.0.0'
}
當給jcenter申請的通過后,你就不需要配置maven url,可以直接使用maven 依賴。