Gradle 初次使用

心静志远 | 技术会被淘汰,但思想会一直永存(多思考,多总结,多分享)

Gradle的简介,这里就不罗嗦了,Google上一大堆,这里就说说它的基本使用吧(可以简单的理解为它是Maven的高级版本,没那么神秘)。

基本使用流程:

1. 下载 Gradle 到本地,并配置环境变量。

2. 在项目中创建 build.gradle文件

3. 编写 build.grade 脚本

4. 执行grade 命令

快捷使用方法:

下载Android Studio,让它帮我们搞定一切。

指定依赖:

1. 依赖仓库中的jar

1 compile ‘group:name:version‘

2. 依赖本地jar文件夹

1 compile fileTree(dir, ‘libs‘ ,include : ‘*.jar‘)

3. 依赖本地单个jar文件

1 compile file(‘libs/xxx‘)

3. 依赖工程

1 compile project(:xx:xx)

4. Android library依赖

需要把库的build.gradle文件中apply plugin: ‘android’ 改为 apply plugin: ‘android-library’ ,否则会报以下错误:

?Gradle Error – Duplicate Files copied in APK AndroidManifest.xml

仓库配置:

1. 从中央仓库下载:mavenCentral()

2. 使用本地Maven仓库:maven { ?url “file://F:/githubrepo/releases” ? ? ?}

3. 指定远程仓库:maven{url “https://xxx”}

多项目管理

1. 加入我们的项目结构如下:

MyProject/

+ app/

? ? +?libraries/

? ? ? ? ?+ lib1/

? ? ? ? ?+?lib2/

2. 外层根配置setting.gradle ,引入各个项目

include ‘:app’,?’:libraries:lib1′,?’:libraries:lib2′

3.?每个项目会包含一个build.gradle文件声明该项目的编译过程

MyProject/

| settings.gradle

+ app/

? ? |?build.gradle

+?libraries/

+ lib1/

? ? ? ? ? ? |?build.gradle

? ? ? ?+?lib2/

? ? ? ? ? ? |?build.gradle

4.?随后我们需要在:app这个项目中指名所依赖的项目

dependencies?{

compile?project(‘:libraries:lib1′)

compile?project(‘:libraries:lib2′)

}

Android 项目的Gradle编译:

我们通常会在build.gradle中配置 依赖的gradle的版本、android编译版本、android构建工具版本,这三者配置的跟本地存在的有不一致就会导致gradle build失败。

1. gradle版本依赖配置如下:

classpath ‘com.android.tools.build:gradle:0.12.+’

我们需要查看我们本地安装的gradle的版本是否大于等于此版本号。(Android Studio推荐使用0.12+,所以推荐使用Android Studio,它会帮助我们下载响应版本的Android Studio)

2. android编译版本

? ? compileSdkVersion 19

确保本地SDK中已近下载了相应版本的SDK API

3. android构建工具版本

buildToolsVersion “19.1.0″

对于android编译版本,同样推荐使用Android Studio,我们通过Gradle编译,如果版本不匹配,它会提示无此版本工具,并提示下载,当然你也可以到SDK中手工下载(不推荐)。

Android studio 中 使用 gradle 加载本地 .so 库:

方法一:添加自定义任务:
01 task nativeLibsToJar(type: Zip, description: ‘create a jar archive of the native libs‘) {
02 ????destinationDir file("$buildDir/native-libs")
03 ????baseName ‘native-libs‘
04 ????extension ‘jar‘
05 ????from fileTree(dir: ‘libs‘, include: ‘**/*.so‘)
06 ????into ‘lib/‘
07 }
08 ?
09 tasks.withType(Compile) {
10 ????compileTask -> compileTask.dependsOn(nativeLibsToJar)
11 }

上面的意思是,在编译的过程中加入nativeLibsToJar任务,这个任务先在构建目录中新建了一个native-libs的文件夹,然后进行重命名为native-libs.jar,将so文件都加入到jar文件中。

方法二:手动生成.Jar文件后自动解包到apk文件

这个方式需要自己手动进行.SO文件压缩,具体步骤为:将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为:?lib/armeabi/*.so)然后把zip文件后缀改为.Jar然后放到libs生成apk就ok

方法三:Gradle官方在新版已经自动实现了打包.SO文件

在sourceSets -> main 中加入一下代码:

jniLibs.srcDirs = [‘libs‘]

这样就不需要手动拷贝了。我的项目是多工程依赖,android-library工程中含有so文件,采用方法一,打出的App包中无法加载so文件,哭呀,由于项目才用了黑匣子,这个问题排查了好几天,shite,所以推荐Android项目加载so文件都使用jni的方式。

参考:http://blog.csdn.net/qiujuer/article/details/24209457

在dependencies 中加入编译后的jar包:
1 dependencies {
2 ????compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
3 ????compile fileTree(dir: "$buildDir/native-libs", include: ‘native-libs.jar‘)
4 }

参考:http://stackoverflow.com/questions/16683775/include-so-library-in-apk-in-android-studio

使用Gradle 对android lib进行打包,打出可依赖的jar:

android.libraryVariants.all { variant ->
????def name = variant.buildType.name
????def task = project.tasks.create "jar${name.capitalize()}", Jar
????task.dependsOn variant.javaCompile
????task.from variant.javaCompile.destinationDir
????task.from configurations.compile.findAll {
????????it.getName() != ‘android.jar‘ && !it.getName().startsWith(‘junit‘) && !it.getName().startsWith(‘hamcrest‘)
????}.collect {
????????it.isDirectory() ? it : zipTree(it)
????}
????artifacts.add(‘archives‘, task);
}

备注:

生成的lib文件夹有时候可能在Android Studio中看不到,所以建议采用打问文件目录的方式产看生成的jar文件。

时间: 2024-08-06 21:47:27

Gradle 初次使用的相关文章

Gradle 的 ssh (uploadArchive)上传是个大坑

前因 需要把项目中的一些共用包发布到私有服务器上(懒得搭建 nexus 环境了,反正也没多少),然后通过 maven 的 http 下载,结果用 gradle 的 ssh 上传怎么都是个失败,折腾了大半天,后来才想到加上 --info 参数试试(不怪我想起的晚,关键是丫在 83% 的时候死在那儿,啥提示都没有),要知道我可是完全按照官方文档来搞的. 经过 第一个坑 加上 info 参数后:gradle uploadArchives --info 结果发现原来死在那儿是等着你输入 yes 还是 n

ReactNative之坑:停在gradle一直出点

问题: 初次安装好React Native 环境后,运行项目,会停留在下载 gradle 的界面一直出点 原因: 下载gradle一直不成功 解决方案: 可以根据提示的版本信息,手动下载,放在目录中,修改配置文件,重新启动运行 下载地址:http://www.androiddevtools.cn/ 放置目录:~\HelloProject\android\gradle\wrapper 配置文件:~/HelloProject/android/gradle/wrapper/gradle-wrapper

借助Gradle Plugin解决模块化开发中模块如何对外暴露接口

直奔主题,在模块化开发中,模块间的数据交流大多数同学会采用以接口作为通信协议的方式.需要面对的问题有以下几点: 接口由谁来维护?这个问题简单,由提供服务的模块来维护.接口怎么暴露?打成jar包,发布到maven.接口在哪里维护?现在可以参考的方案有三种:一. 所有相关模块的接口统一在一个模块中维护:二. 各个模块的接口分别在自建一个新的模块中维护,通过命名规则一一对应:三. 像微信的.api方案,使用特殊的规则混杂在各自的模块中. 如果接着第一个问题,方案一好像就有点难确定接口对应的来源模块.方

Gradle 打可执行jar包

初次使用Gradle,想和maven一样,把gradle项目打成可执行jar包,具体步骤: 1.下载gradle 版本,并配置环境变量, 下载地址:https://gradle.org/releases/ 再cmd下能执行gradle命令 2.idea 中新建一个gradle项目 3.build.gradle文件配置如下: apply plugin:'java' apply plugin:'application' jar{ manifestContentCharset 'utf-8' meta

(转载)解决AndroidStudio导入项目在 Building gradle project info 一直卡住

源地址http://blog.csdn.net/yyh352091626/article/details/51490976 Android Studio导入项目的时候,一直卡在Building gradle project info这一步,主要原因还是因为被墙的结果.gradle官网虽然可以访问,但是速度连蜗牛都赶不上... 解决办法主要有两种,一是直接下载gradle离线包,二是修改项目的gradle-wrapper.properties里的gradle版本为自己电脑已有的版本. 离线包下载导

Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.2——将Eclipse开发的项目导入到AndroidStudio

问题: 你想要将一个Eclipse ADT项目导入到Android Studio中. 解决方案: Android Studio提供了一个导入向导,可以重写已有的项目. 详细: 在Android Studio的欢迎页上,显示导入eclipse或者gradle项目的向导按钮. 链接会打开导航让你选择已有Eclipse项目的文件地址.使用老的项目结构,res,src和AndroidManifest.xml都直接在根目录下.如: 选择好目标目录,导航提供了一个将jar包转化为gradle下的依赖,以及其

Android开发:《Gradle Recipes for Android》阅读笔记1.5

这节讲的是如何如何添加JAVA依赖库. 默认的android项目有两个build.gradle文件,分别位于顶级目录,和应用自己的目录下(通常放在一个叫app的目录下面). gradle支持多种方式列举依赖库,最常用的方式是用引号包括,冒号分割group,name,version的方式.(gradle是使用Groovy的,所以支持单双引号字符串,后面章节会详细讲) 每个依赖都会和某个配置关联.android项目包括compile,runtime,testCompile和testRuntime配置

centos7 初次开机问题解决办法

centos7初次开机问题解决办法

android studio学习----gradle基础

Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. 安装Gradle 在Android Studio系列教程一--下载与安装中新建项目成功后会下载Gradle,貌似这个过程不FQ也是可以下载,但是访问特别慢,建议FQ下载.那么下载的Gradle到什么地方呢? Mac上会默认下载到 /Users/<用户名>/.gradle/wrapper/dists 目录 Win平台会默认下