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
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 依赖。
网友评论