Android Studio发布项目到jcenter,一行代码引入Module

本文介绍如何将自己封装的Android模块发布到JCenter,包括注册账户、创建Repository、配置Gradle文件以及使用Gradle命令上传项目等步骤。

转载请注明出处:

http://blog.csdn.net/lowprofile_coding/article/details/77897300

前面我们使用自己封装的okhttp项目时候,只需要app/build.gradle文件中加一行代码就能使用项目。

compile 'com.ansen.http:okhttpencapsulation:1.0.1'

那是因为我之前就把封装的module提交到了jcenter服务器。所以android sutdio把从jcenter服务器把类库下载下来。

提交项目到jcenter

当我们做好一个轮子的时候,或者项目中有一些好的module想分享给别人用的时候,首先把代码提交到github(全球男性交友平台)上开源,但是这还不够,别人拿你的代码作为module依赖太麻烦了,比较酷的方法应该是一行代码引用。

首先我们得有一个jcenter账号

这个网站注册有点坑爹,有两种方式(企业版跟个人免费版),个人版的项目必须要开源,个人注册地址如下:

https://bintray.com/signup/oss

一定要注意不要注册了企业版,没法直接切换成个人版,必须要得试用期过重新注册。用我贴的链接注册就行。还有注册邮箱不能是国内163邮箱或者qq邮箱,我用的是google邮箱注册的。

上传项目到jcenter
jcenter上创建Repository

登录jcenter账号,进入用户首页,点击Add New Repository按钮。
jcenter_main

进入Add New Repository页面,Name输入框输入module名称(okhttpencapsulation),Type选择Maven。然后点击最后的Create按钮,Repository就创建成功了。
create_repository

Android Studio中添加代码

项目的build.gradle中加入如下代码:

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'

修改后效果图如下:
project_build

修改要上传的module下的build.gradle。例如我这边路径是:OkHttpEncapsulation/okhttpencapsulation/build.gradle。在文件尾部增加如下代码:

// 这里添加下面两行代码。
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

// 定义两个链接,下面会用到。
def siteUrl = 'https://github.com/ansen666/OkHttpEncapsulation' // 项目主页。
def gitUrl = 'https://github.com/ansen666/OkHttpEncapsulation.git' // Git仓库的url。

group = "com.ansen.http"// 唯一包名,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的com.ansen.http就是这里配置的。
version = "1.0.1"//项目引用的版本号,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的1.0.1就是这里配置的。

install {
    repositories.mavenInstaller {
        // 生成pom.xml和参数
        pom {
            project {
                packaging 'aar'
                // 项目描述,复制我的话,这里需要修改。
                name 'okhttpencapsulation'// 可选,项目名称。
                description 'okhttp project describe'// 可选,项目描述。
                url siteUrl // 项目主页,这里是引用上面定义好。

                // 软件开源协议,现在一般都是Apache License2.0吧,复制我的,这里不需要修改。
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                //填写开发者基本信息,复制我的,这里需要修改。
                developers {
                    developer {
                        id 'ansen' // 开发者的id。
                        name 'ansen' // 开发者名字。
                        email 'iprivateworkemail@gmail.com' // 开发者邮箱。
                    }
                }

                // SCM,复制我的,这里不需要修改。
                scm {
                    connection gitUrl // Git仓库地址。
                    developerConnection gitUrl // Git仓库地址。
                    url siteUrl // 项目主页。
                }
            }
        }
    }
}

// 生成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
}

// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user") // Bintray的用户名。
    key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。

    configurations = ['archives']
    pkg {
        repo = "okhttpencapsulation"  //Repository名字 需要自己在bintray网站上先添加
        name = "okhttpencapsulation"// 发布到Bintray上的项目名字,这里的名字不是compile 'com.ansen.library:circleimage:1.0.1'中的circleimage。
        userOrg = 'anhui'//Bintray的组织id
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true // 是否是公开项目。
    }
}

都有注释,当有时候的时候直接复制代码就行。然后修改一些值。在最后的bintray里面有从local.properties文件中获取用户名跟apikey。这是保密信息,我们不能暴露给别人,build.gradle文件我们会提交到git服务器上,但是local.properties文件不会提交。

打开OkHttpEncapsulation/local.properties文件,在尾部添加两行,这个key是我随便修改过的,是个错误的key,需要自己去替换:

bintray.user=anhui
bintray.apikey=ac8137c9138a8b49a18a323260041fcf1f75a6f

user是我们注册的名字,apikey需要去jcenter官网查看。进入修改用户界面,点击左侧apikey按钮,然后输入密码就能看到了。把这个key复制到local.properties中替换掉。
apikey

gradle命令上传

上传项目到jcenter需要用到gradle命令,首先把gralde加入到环境变量。mac下加入环境变量教程,windows环境不会加入环境变量的自行搜索下:

http://blog.csdn.net/u013424496/article/details/52684213

在android studio底部有个Terminal的按钮。点击它进入Terminal界面。
terminal

输入命令:

gradle install

出现BUILD SUCCESSFUL就表示成功了。

继续输入命令,提交项目到bintray:

gradle clean build bintrayUpload

这个命令会提示上传进度,上传到100%就成功了最后也会出现BUILD SUCCESSFUL。到了这一步你的进度条已经到了90%了,就差最后一步了。

Add to JCenter

我们提交成功了之后呢赶紧打开jcenter官网看看有没有成功。在首页点击我们的package(okhttpencapsulation)名称,在这个页面应该就能看到我们提交的项目了,点击项目进入项目详细页。
project_main
我们可以看到版本,看到gradle在线引用的代码,还能切换到Maven跟lvy方式。然后右边有个Add to JCenter,每个项目刚刚提交都必须要审核的,所以我们点击Add to JCenter去进行审核。审核成功就能一行代码引用这个module啦。

源码下载

如果你想第一时间看我的后期文章,扫码关注公众号,每周不定期推送Android开发实战教程文章…

      Android开发666 - 安卓开发技术分享
             扫描二维码加关注

Android开发666

### 如何在 Android Studio 中导入外部包或模块 #### 使用 Gradle 导入依赖项 最常见的方式是通过 `build.gradle` 文件来管理依赖关系。对于大多数开源库来说,它们通常已经发布到了 Maven Central 或 JCenter 等公共仓库中。在这种情况下,只需将相应的依赖声明添加到项目的 `build.gradle` 文件即可。 例如,要引入 OkHttp 库,可以在 `app/build.gradle` 文件中的 `dependencies` 块下添加如下代码[^3]: ```gradle implementation 'com.squareup.okhttp3:okhttp:4.9.0' ``` 保存文件后,Android Studio 将自动同步并下载所需的库及其依赖项。 #### 添加本地 Module 当目标库未托管于远程仓库时,可以考虑将其作为独立的模块导入到当前项目中。具体操作步骤如下: 1. **准备源码** 首先获取目标库的完整源码(可以从 GitHub 下载 ZIP 并解压)。假设这里的目标库为 Foursquare 提供的 OAuth 实现[^1]。 2. **导入现有模块** 打开菜单栏上的 File -> New -> Import Module... ,按照向导提示选择刚刚下载好的库目录完成导入过程。此时,Android Studio 会自动生成必要的配置文件并与主应用建立联系[^2]。 3. **设置依赖关系** 成功导入之后,在主 app 的 `settings.gradle` 和 `build.gradle` 文件里确认新加入的部分已被正确定义以及引用。接着回到 `app/build.gradle` 的 dependencies 节点处追加一行类似于这样的语句: ```gradle implementation project(':foursquare-android-oauth') ``` 这样就完成了对该特定 module 的集成工作流程。 #### 处理 .jar 文件形式的第三方类库 有些时候开发者仅提供编译后的二进制版本即 `.jar` 形式的档案而非完整的 source code 。针对这种情况处理方法略有不同: - 创建名为 libs 的子目录位于对应 module 根路径之下; - 把 jar 文件拷贝至此位置; - 右键单击该 jar 文件选取选项 “Add As Library…” 完成绑定动作[^4]; 或者也可以手动编辑 gradle script 来达到相同效果: ```gradle repositories { flatDir { dirs 'libs' //指定存放 jar 的地方 } } dependencies { compile name:'your-library-name', ext:'jar'//替换为你实际使用的名称 } ``` #### 替代方案 - 直接嵌套资源与代码片段 如果既无法利用上述两种途径又不想额外维护多余的 components,则可以选择直接把所需 component 的 res , java codes 整体迁移至自己的 project 当中去。不过需要注意的是此做法可能会带来重复定义的风险同时也增加了后续升级维护的成本所以一般只推荐用于非常小型简单的组件上[^5]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安辉就是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值