Android Studio 配置bintray开源打包

2018-06-11  本文已影响0人  云里雾花

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
#开源协议
PROJ_LICENSES=Apache-2.0
#开源标签
PROJ_LABELS=android
#发布的版本
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 

#创作作者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,为何我们放在在这个文件里面是因为,你不可能把这个文件也发布到git上面吧

在你需要打包的module目录下新建 bintray.gradle文件 里面内容如下

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你的注释写的不规范就编译不过。
}
// 生成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   //发布到Bintray的哪个仓库,这个就是第一步时你在bintray网站建立的仓库名,若这仓库不存在,则会报错
        name = PROJ_NAME   //发布到Bintray上的名字,这个是显示在bintray仓库中的项目名字,与包名可同可不同,若仓库没有这个项目文件夹,则会自动创建
        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"
    }
    }

你的版本在哪里,怎么依赖呢,如下图就是依赖关系,然后在你需要的地方依赖就可以使用了


bintray_image_10.png
dependencies {
implementation 'com.kye.android:reactnativehotfix:1.0.0'
}

当给jcenter申请的通过后,你就不需要配置maven url,可以直接使用maven 依赖。

上一篇 下一篇

猜你喜欢

热点阅读