对于Android 的开源库,通常经过 JCenter 或者 JitPack 发布开源。两种方式都可~java
- 尽可能不要在官网注册,由于官网注册的是企业版,咱们须要的是我的版
- 直接关联
Github
帐号进行注册 & 登陆(建议)
PS:若是Github帐户使用了qq邮箱,163邮箱等可能会没法注册,能够尝试给Github帐户 增长一个邮箱例如 Gmailandroid
Module
文件夹步骤以下git
Android Studio中github
Module
文件夹的结构和 原有的项目文件夹(app
)很是相似View
为例子View
代码包括:1个类文件Library Module
的Gradle
文件中配置//Library build.gradle apply plugin: 'com.novoda.bintray-release' // 添加bintray插件 publish { userOrg = 'dmingou' // Bintray用户名 repoName = 'AnimatedFloatingButton' // Bintray上的新建的仓库名(Repository) groupId = 'qg.odm' // 依赖名 implemention 'x:y:z'中的包名x artifactId = 'AnimatedFloatingButton' // 依赖名implemention 'x:y:z'中的项目名y publishVersion = '1.0.0' // 依赖名implemention 'x:y:z'中的版本号z desc = 'XXXXXXXX' // 对该开源组件的说明 website = 'https://github.com/DMingOu/AnimatedFloatingButton' // VCS地址 }
注意:尽可能保持你的library module的名字同artifactId同样web
缘由:Bintray上,你的项目的 maven-metadata.xml 文件的路径 为 gruopId+"/"+module名称。api
假设你的groupId=qg.odm,artifactId是AnimatedFloatingButton,但module名称是AnimatedFloatingButtonLibrary。
此时,项目文件在qg.odm.animatedfloatingbuttondemo目录下的,但maven-metadata.xml文件倒是在qg.odm/AnimatedFloatingButtonLibrary目录下的,可能会有冲突。bash冲突:若你有多个项目groupId同样 & artifactId不同,但module名称都是library的话,maven-metadata.xml文件的地址可能会同样,即都是:gruopId+"/"+module名称,那么就可能产生冲突。oracle
解决方案:保持module名称和artifactId一致。app
Gradle
文件中配置使用插件前应该看下最新版本 Bintray-release 的github地址maven
//Project build.gradle classpath 'com.novoda:bintray-release:0.9.2' allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') } } allprojects { tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs/api" } } }
AndroidStudio
的 Terminal
输入如下命令// 每行命令均用空格隔开,此处是为了展现才会分行 <-- Windows版本 --> gradlew.bat clean build bintrayUpload -PbintrayUser=UserName // Bintray用户名 -PbintrayKey=********* // Bintray上的API key -PdryRun=false <-- Mac版本 --> ./gradlew clean build bintrayUpload -PbintrayUser=carson-ho -PbintrayKey=***************************** -PdryRun=false
//一行命令直接在Terminal执行,例子以下 gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
Jcenter
网站)注:通常来讲不会一次成功,可能出错的问题(坑),详情拉到末尾总结
到这一步,你已经将项目上传到 JCenter
了,可进入查看到 Package 已被添加进去
JCenter
Library
了!在对应的 Package 页点击对应的版本号,在Maven Info中能够查看
当须要进行Android Library
版本更新时,只须要如下2个步骤:
Library Module
的Gradle
文件中的配置2中 从新配置版本号,其余的都不用更改!!在AndroidStudio
的 Terminal
输入如下命令
//一行命令直接在Terminal执行,例子以下 gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
等待必定时间,就能够看到 Bintray
网站上更新了Android Library
的新版本。
MacOS可能出现的坑
// 错误日志:说明权限有问题 bash: ./gradlew: Permission denied // 解决方案:得到权限,直接在终端输入如下命令 chmod +x gradlew
研究一番,相似的错误还有 **Not Found Repo …**网上回答清一色是说配置中写错了或者检查下空格问题。而后我认真检查发现无错后,我直接按原来的命令,再次执行,而后竟然就 Build Successful 了,有点玄学
bintray网站,Package上传成功后,点击“add to jcenter”按钮时,提示以上信息。
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
gradlew clean build gradlew bintrayUpload.........
gradlew clean build bintrayUpload...
解决办法就是手动执行task。那何时执行?怎么执行呢?
在gradlew clean build 和 gradlew bintrayUpload… 两个Task之间执行;
首先在android studio 中打开gralde task视图,前后右击run运行下面的两个Task便可;
执行完之后,对应module下的build目录会生成对应的pom文件
再按照如上操做,而后再去官网点击“add to jcenter”按钮便可顺利进入申请界面
在Github上传须要开源的项目,与 上传JCenter步骤中的准备工做对项目代码的操做相似。
参照 上传JCenter开源 的 准备工做的 步骤3,步骤4,步骤5
classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’
PS:jitpack的android-maven-gradle-plugin版本要和gradle版本对应。具体的对应呢?查看官方说明~~
以下图:
在library的 build.gradle中添加代码
// JitPack Maven apply plugin: 'com.github.dcendents.android-maven' // 其中username须要替换为你在github上的用户名 group='com.github.username'
以下图所示:
修改后的部分要提交到github上去!!
绑定了帐户后,能够在左方的 Repositories栏挑选;也能够在输入框中填入 发布release的项目地址
Log栏是绿色,表明OK,点击 Get It 按钮,版本提交完成后,JitPack会自动生成引用该library的配置信息:
在项目依次添加这两处,就可使用发布的代码库了
谢谢阅读的同窗~,但愿文章能对您有用