Android Studio--gradle,jCenter
2016-04-24 22:26
429 查看
一、gradle简介
gradle是一个基于jvm的项目构建工具,使用groovy语言编写,主要面向java应用。集成了Maven和ant的功能。二、主要文件
以我的SortContact工程为例,自己可以看文件目录细节:app和library是两个module,app是application型的,library是library型。1. SortContact/gradle/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
gradle下载地址为:http://www.gradle.org/downloads。这个as在项目构建成功时会自动下载好。
默认存储地址:C:\User.gradle\wrapper\dists
以上这些默认路径一般不会更改,gradle-2.8-all.zip是gradle版本,很多导包不成功的原因就是因为它的版本问题,会有提示。
2. 列表内容SortContact/setting.gradle
include ':app', ':library'
项目里需要加入的module,若还有其它模块都需按此种格式加进去,不然就使用不了这些模块的方法。
3. 列表内容SortContact/build.gradle
此文件是整个项目的gradle基础配置文件
buildscript { repositories { jcenter() } dependencies { //声明android gradle plugin的版本,这个我当时的as版本是1.3的所以gradle plugin 1.3的版本,现在是1.5正式版,2.0正式版也快出来了,到时as版本升级,下面这个版本号也得相应改变。 classpath 'com.android.tools.build:gradle:1.3.0' } } allprojects { repositories { jcenter()//jcenter是一个由 bintray.com维护的Maven仓库 //以前版本是mavenCentral(),由sonatype.org维护的Maven仓库 //jcenter和Maven Central 都是标准的 android library仓库,但是它们维护在完全不同的服务器上,两者之间毫无关系。 // 在jcenter上有的可能 Maven Central 上没有,反之亦然。 } }
Maven Central最大问题是上传library非常困难,同时也有安全方面等原因,as团队就把他换为jCenter,我们的库也就是从这里得到的。jCenter是全世界最大的java仓库,所以相对Maven Central来说有的东西更多一点。然后他上传library到仓库也很简单,若想把library上传到 Maven Central 也可以在bintray网站上实现。
4. SortContact/app/build.gradle
app这个module的gradle配置文件(library的就不讲了,因为同为module)
apply plugin: 'com.android.application' //声明为android程序,其他module比如我的项目里library就得为com.android.library android { compileSdkVersion 23 //编译版本 buildToolsVersion "23.0.2" //build工具版本,在SDK Manager下载相应版本,也是导包不成功原因之一,与eclipse一样的道理 defaultConfig { //默认配置 applicationId "com.xiong.sortcontact" //包名 minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { //创建类型 release { minifyEnabled false //是否进行混淆 // 前一部分android默认的混淆文件,包含了基本的混淆声明,目录在 /tools/proguard/proguard-android.txt? // 后一部分是我们项目里的自定义的混淆文件,声明一些第三方依赖的一些混淆规则,目录在 /app/proguard-rules.txt proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions{ abortOnError false } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) //编译libs目录下所有jar包 testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile project(':library') //编译这个项目除了app的其他模块,此处只要一个library }
三、Gradle获取library
知道了大概的gradle构建文件,那他是如何compile就能获取library的呢一般library字符串形式有三部分:
groupID(该library的具体包名):artifactID(library的真实名字):version
添加了依赖gradle就会询问maven仓库的服务器,查看此library是否存在,若有就按着询问的网址下载与我们项目一起编译,这就不用我们自己去手动下载了。仓库里的library有两种:jar包和arr文件。
arr文件就比jar包多了一些什么mainifest、资源等这类东西,其实就是在jar包基础上植入一些android特性,为android开发设计。
四、上传我们的library到jCenter
前面也大概介绍了jCenter,既然as能直接compile下载bintray服务器里的代码,那我们何不把自己的library放到仓库里开源出去,以后就不用移植了也compile下来就是了,而且也可以让别人也使用。然后google了很多这方面的资料,好多既麻烦还不成功,然后在我老大那弄到一种最简单的办法,那就是借助bintray-release插件来将类库上传至binary,具体步骤如下:1.先进入bintray官网注册帐号,然后点击maven,然后在
add package,注意这个package name就是你在第二步里要填的artifactId
2.还是以原先这个项目为例,我的library模块就是需要上传的,也就是我刚上面省略没讲的,我干脆直接复制过来,然后在旁边有注释就代表是我们需要手动加上的。
apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release'//插件bintray-release android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions{ abortOnError false } } //下载插件路径,我是这么理解的 buildscript { repositories { jcenter { url "http://jcenter.bintray.com/" } } dependencies { classpath 'com.novoda:bintray-release:0.3.4' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' } //配置bintray的信息 publish { userOrg = 'xiong-hui-hui'//bintray里的用户名 //我以后需要compile'com.xiong.sortcontact.library:sort:1.0'所以后面三项自己看着填吧 groupId = 'com.xiong.sortcontact.library'//方法所在包名 artifactId = 'sort' //bintray里你建的包名 publishVersion = '1.0' //版本号 desc = 'for some data to sort'//描述:随便写别用中文就行,反正我是出错了的 website = 'https://github.com/xiong-hui-hui/SortContact' //指明github里该项目的位置 }
3.然后就是构建命令
gradlew clean build bintrayUpload -PbintrayUser=xiong-hui-hui -PbintrayKey=你的API key -PdryRun=false 用户名也改为自己的
4.Linked to jcenter
这个需要审核,可能需要一天,审核通过后会出现!这个图标,点击它进入jCenter页面,再点击最后一步发布也是在这里完成,点击Include My Package按钮加入你的包发布(可能你的包名会搜索不出来,我就遇到了,但也还是成功的)好啦,现在已经大功告成啦。
相关文章推荐
- android onTouch事件
- 作业——在线学习Android课程之第八周(下载器)
- Android:Layout_weight的深刻理解
- Android安全攻防战,反编译与混淆技术完全解析(下)
- Android MVP学习
- 《Android JNI》05 在JNI中调用Java的函数
- Android开发学习之路--RxAndroid之简单原理
- Android开发学习之路--RxAndroid之简单原理
- Android Studio中拦截电话的方法
- Android常见问题总结(二)
- android图片的处理
- Android的常用布局
- Android-SeekBar可滑动进度条
- Android内部File文件缓存
- android简单的书写
- Android触摸事件分发机制详解
- android支持缩放的图片浏览工具
- Android实现IOS向右滑动退出当前Activity
- Android获得应用包名
- android源代码编译