问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

代码发布到jcenter 安全么

发布网友 发布时间:2022-04-24 19:07

我来回答

1个回答

热心网友 时间:2023-10-05 06:02

我们在用AndroidStudio写Android程序的时候经常会看到在build.gradle文件里面添加引用的类库,只需要一行代码。 
例如:

dependencies {
compile 'com.david.gradientuilib:gradientuilibrary:1.0.1'}123

有的时候我会感到好奇,为什么AndroidStudio里面引用类库就只需要一行代码,不像Eclipse里面引用类库需要实际的jar文件才可以,其实AndroidStudio的类库也是需要实际的jar,aar这样的文件的,之所以配置一行代码就能实现引用类库,就在于Gradle可以帮助我们通过相应的配置下载对应的类库文件 
那么问题来了,下载下来的文件去哪里了呢? 
答案就在用户目录目录下面的.gradle文件夹可以找到,Mac和Linux平台也能找到相应的路径 

AndroidStudio是从Maven Repository 服务器下载类库的。基本上有jcenter和Maven Central这两个服务器用于下载Android的类库。 
在代码里配置如下: 
jcenter仓库

allprojects {
repositories {
jcenter()
}
}12345

Maven Central仓库

allprojects {
repositories {
mavenCentral()
}
}12345

一开始AndroidStudio是使用MavenCentral作为默认的远程仓库下载类库的。 
但是MavenCentral有一些问题没有解决。首先是对于开发者不友好,开发者想上传自己的类库到MavenCentral非常困难,所以后来AndroidStudio团队决定把默认远程仓库换成jcenter。

jcenter上传下载速度快,而且是最大的java类库仓库,最最重要的一点是,如果你上传类库到jcenter成功了,那么如果你还想上传类库到MavenCentral,就会变得非常容易,只需要用鼠标bintray网站上点几下就可以了。

怎么从远程仓库pull一个AndroidLibrary下来?

在讲述如何上传类库到jcenter,我们需要先了解我们写的那一行gradle代码的意义。

compile 'com.david.gradientuilib:gradientuilibrary:1.0.1'1

基本上我们可以从这一行代码可以了解到,引用一个library的代码需要3个部分,即:

GROUP_ID:ARTIFACT_ID:VERSION1

在这句代码里面的GROUP_ID是com.david.gradientuilib,ARTIFACT_ID是gradientuilibrary,VERSION是1.0.1。按照我的理解,GROUP_ID就像是我们写一个项目使用的公司包名一样,表示自己所在的团队或个人,ARTIFACT_ID我认为就是这个类库的名称,用于区分同一个GROUP下不同的类库,最后的VERSION顾名思义就是版本号。

怎么上传你的类库到jcenter仓库?

基本上大致的步骤可以慨括为,在AndroidStudio上准备好要上传的库项目,配置相关gradle代码,然后上传到bintray网站上,最后同步到jcenter仓库里。

第一步:在Bintray上创建一个package

步骤如下:

1. 在bintray.com上面注册一个账号,然后登录进去。

bintray可以通过github账号来登录,所以建议最好是有一个github账号,也方便后面的工作。

2.注册登录完成之后,点击Maven

3.点击Add New Package

4.填写必要信息,然后点击Create Package

注意这里的Version control是必填的,所以在上传类库到bintray之前最好是把项目push到github上,这样就会很方便了。

5.Create Package成功之后,就可以看到自己创建的Package了

第二步:创建好要上传的AndroidStudio项目

在这里我们将要上传的是Android Library mole

然后我们需要设置bintray的username和API Key来进行bintray的加密认证,这些信息将写在local.properties文件里。写在local.properties的原因在于,bintray的username和APIKey是敏感的私人信息,自己应该保管好,而不是把它上传到github上,正好把local.properties文件写在.gitignore里面过滤掉不会影响上传的github项目。

代码如下:

bintray.user=YOUR_BINTRAY_USERNAME
bintray.apikey=YOUR_BINTRAY_API_KEY12

这里的username就是你bintray账号的用户名,APIKey可以在bintray页面的Edit Profile找到

在要上传的库mole的build.gradle文件里面添加如下代码:

apply plugin: 'com.android.library'ext {
bintrayRepo = 'maven'
bintrayName = 'GradientUI'

publishedGroupId = 'com.david.gradientuilib'
libraryName = 'GradientUI'
artifact = 'gradientuilibrary'

libraryDescription = 'The gradient ui that View can change from one background to another background. (Such as the background of ImageView, the color of TextView)'

siteUrl = 'https://github.com/wangdong20/AndroidGradientUI'
gitUrl = 'https://github.com/wangdong20/AndroidGradientUI.git'

libraryVersion = '1.0.1'

developerId = 'david'
developerName = 'David Wong'
developerEmail = 'wangd1991@gmail.com'

licenseName = 'The Apache Software License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
allLicenses = ["Apache-2.0"]
}12345678910111213141516171819202122232425

在这里需要把bintrayName写成之前Create Pacakge所填写的package name,publishedGroupId就是我们之前提到的GROUP_ID,artifact就是之前提到的ARTIFACT_ID,libraryVersion就是VERSION。

如果上传成功的话,那么我们引用该类库的代码就是:

compile 'com.david.gradientuilib:gradientuilibrary:1.0.1'1

最后我们还需要配置bintray upload的相关代码

apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'12

这两行代码添加到前面修改过的library mole的build.gradle的最后面。

然后是在整个project的build.gradle里面添加最后三行代码。

dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'

// NOTE: Do not place your application dependencies here; they belong
// in the indivial mole build.gradle files
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
}12345678910

最后在AndroidStudio提供的Terminal窗口执行如下命令:

gradlew install1

如果顺利的话,过几分钟就会出现

BUILD SUCCESSFUL1

接下来需要把build成功的文件upload到bintray上

gradlew bintrayUpload1

顺利的话,也会出现

BUILD SUCCESSFUL1

检查你在bintray创建的package,你会看到对应的版本号 

在这里我觉得我有必要提一下,在我执行gradlew bintrayUpload命令的时候遇到的一些问题。

我遇到的问题是在build过程中,出现javadoc生成失败的问题,百度了一下,原因是编码问题,中文的注释对应的编码是GBK编码,上传的时候会出问题,没有找到太好的解决方案。最后我采用了一个简单粗暴的方法,就是把所有有中文注释的地方都换成了英文,改完后顺利地上传成功。

到目前为止,你已经成功地把类库文件上传到bintray上,接下来就是同步到jcenter上了。

第三步:同步library文件到创建的bintray仓库


这一步需要做的是最简单的,只需要在如上页面点击右下角的Add to JCenter按钮,可能是我已经上传过了,所以现在没有显示Add to JCenter按钮。

接下来会跳到一个Request to include package GradientUI in jcenter的页面,什么都不用做,直接点击Send按钮就可以了。

大概过个2,3个小时,通过jcenter那边的审核就会在bintray上收到jcenter那边的同意消息提醒。 
至此就要恭喜你,你的类库上传到jcenter成功了!

到这里大家就可以用我写的类库GradientUI,仅仅只需要添加一行代码:

dependencies {
compile 'com.david.gradientuilib:gradientuilibrary:1.0.1'}123

希望我的回答可以帮到您哦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 怎样在百度贴吧中私信小吧主 怎么手动将jar包加入到maven仓库 DevOps实践中,有必要用制品库吗? 杰蛙JFrog是怎么实‌现制‌品冷数‌据管‌? 为什么选择用JFrog Artifactory来管理制品? EXCEL怎么让整列数据相加求和? 如何将EXCEl里的数据相加 我想申请公租房子,怎么申请,在哪里申请,需要什么资料? 南京公租房在哪租金是多少 活塞空压机的工作原理 公租房在哪个部门申请?打工仔要在那里申请,还搞不懂。 空压机活塞式进气阀的结构和工作原理是怎样的? 公租房在哪里申请啊? 空压机加载电磁阀的动作原理 寿力空压机加载与卸载电磁阀的工作原理 英格索兰空压机断油电磁阀工作原理? 寿力空压机上的加载电磁阀怎么工作 空压机上的加载阀是怎样工作的工作原理 电磁阀工作原理 英格索兰空压机移动式加载电磁阀的工作原理是什么? 目前有没有DevOps解决方案能保证整个软件包生命周期的安全? 如何选择正确的DevOps工具? 企业应该如何处理制品冷数据? ijkplayer如何导入android studio 怎么规划一套完整的 DevSecOps 策略工具? Devops的作用?有没有知道的? 怎么把本地的jar包弄到maven里去 请教专家:易经是一种什么学说?它是科学还是迷信? 易经讲的是什么? 你所熟知的CI/CD工具都是有哪些? 易经的三易学说对养生学的影响 易经的学说国家政府是否支持? 一四取代环己烷椅式构象的翻转能否改变顺式或者反式结构体? 易经学说的梅花易数是真的吗? 在易经学说里面柳暗花明又一村是形容什么意思? 环已烷的空间结构图 为什么《易经》深奥但不神秘? 易经学说中,卜卦写下“志”字应如何解释? 环己烷的所有原子都在同一平面吗,所有原子的具体分布 易经学说一个人斗容不斗智什么意思