Android Studio 配置bintray開源打包

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 依賴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容