LibModule 配置更新 9 months ago
  app 配置更新 9 months ago
  gradle/wrapper 配置更新 9 months ago
  screenshots readme a year ago
  .gitignore 重建gradle 结构的示例 a year ago
  LICENSE.TXT LICENSE a year ago
  README.md 一些配置更新 9 months ago
  build.gradle 配置更新 9 months ago
  settings.gradle 加入Module 示例 a year ago

README.md

Migrate To Gradle 手动迁移ADT 的ANT结构工程至Gradle

前言

现在Android Studio 已经发布正式版,其带来的新的功能对于原来的eclipse 用户是非常友好的,只需要指定目录就能自动将代码导入并配置好相关的Gradle 脚本。 我们可以用正式版的AS中的可视化插件轻松的将旧工程升级到Gradle 构建系统下,而这个项目旨在向大家介绍Gradle 的Android 工程的结构和常用配置。

工具

1、Android Studio

2、Intellij IDEA

了解Gradle

Gradle 以module 来管理project,在Gradle 构建的Gradle project中通常包含application module(com.android.application),与library module(com.android.library)两种module。

在Gradle 的project 中需要使用,基本上全都使用.gradle 文件来配置,是一个脚本化的工程构建,而非原先ADT中那种eclipse 的或视化构建。

迁移工程

1、创建一个文件夹来放你的工程,比如Migrate to Gradle。

2、Wrapper:你需要Gradle 的Wrapper 来下载和管理当前项目使用的Gradle 的版本,当你的环境中没有配置Gradle 时它可以自动下载Gradle 并配置到你的环境中去。 如果你在天朝,那么配置Gradle 的时间可能会稍长,所以我一般都是直接从Android Studio 新建的工程中拷贝Wrapper 出来使用,以避免重复配置不同版本的Gradle。

而如果你不想使用工具中的版,你还可以进行其它配置,见下一点。

3、在文件夹中建一个app (或者其它什么名字)文件夹来存放你的application module,请将你原先的工程文件拷贝到app 文件夹中去。然后你还需要一个build.gradle 和settings.gradle文件。看起来如下图:

两个文件的配置如下:

build.gradle -- 根目录的build.gradle 文件一般用来配置整个工程

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:0.14.2'}
}allprojects {repositories {jcenter()}
}// 如果你想配置你自己制定的Gradle 版本,加入以下配置,然后在导入工程时选择use customizable gradle wrapper
task wrapper(type: Wrapper) { gradleVersion = '2.1' }

settings.gradle -- 根目录的settings.gradle 文件用来制定哪个文件夹为module,以“:”符号给目录分级

include ':app'  // 根目录下的一级目录
//include ':libs:module0' // 根目录下的二级目录,如果你需要这个module 的话

4、配置你的app module:在其中加入build.gradle,具体配置如下:

buildscript {repositories {jcenter() //你所使用的仓库}dependencies {classpath 'com.android.tools.build:gradle:0.14.2' // Gradle 的Android 插件版本}
}
apply plugin: 'com.android.application' // 导入Android Application 插件,将此module 配置成application module repositories { jcenter() // 仓库 } android { compileSdkVersion 21 // 使用SDK的版本,请配置你SDK中有的最新版本 buildToolsVersion "21.1.1" // buildTools 版本,你SDK中有哪个版本配哪个版本,建议更新到最新的版本 defaultConfig { applicationId "com.github.ShinChven.migratetogradle" // 原来的包名,现在叫applicationId minSdkVersion 9 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { // 配置打包的版本 release { // 发行版 runProguard false // 是否混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' // 默认混淆文件 proguardFiles 'proguard-project.txt' // 自定义混淆文件 } debug { // debug 版 } } sourceSets { // 如果你的工程是从ANT 中迁移过来,可以使用sourceSets 来配置工程结构,如果你使用的是标准Gradle 结构,可以不需要配置。 main { java.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] // 配置此处才会打包jni 的.so 文件 jni.srcDirs=['jni'] manifest.srcFile 'AndroidManifest.xml' } } } /**  * https://gradle.org/docs/current/dsl/org.gradle.api.artifacts.dsl.DependencyHandler.html  */ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' compile 'com.android.support:support-v4:21.0.0' compile(project(':LibModule')) // 包含module }

完成这些你的工程就会看起来像这样:

运行工程

1、open project

2、选中build.gradle 文件

3、导入:

project 中包含Wrapper 选Use default gradle wrpper

在project 的task 配置来自动配置gradle 选Use customizable gradle wrapper

Use local Gradle distribution 为使用系统变量中配置的gradle

4、如果你是第一次运行Android Studio ,那么请先感谢郭嘉,然后等待配置完成

jar包去重

如果你运气不好遇到了下图,说明你的工程中包含的v4 包或者其它什么包在你的dependencies 配置中出现了重复引用的冲突,你需要去重:

如果使用Gradle 构建工程,建议将libs 文件夹中的jar 包都转换成gradle dependencies(依赖),而不是直接存放在文件夹中。两者不可同时存在,否则因为包名、文件重复则报错。

例如,android-support-v4.jar 你可以在build.Gradle 中这样配置

    dependencies { // 依赖配置compile 'com.android.support:support-v4:21.0.0'}

去除冲突的依赖

你所添加的那些依赖(dependencies)中的项目的可能会引用同一个项目,却是不同版本,在build 的时候可能会出错,如果要去除冲突,配置如下

    compile ('com.github.xxx:1.0'){exclude module: 'appcompat-v7' }

build.Gradle 另外的一些配置,Good luck.

配置中的版本号,请根据最新sdk 中的版本进行配置

bBuildscript { // 这段配置如果放入project 级的build.gradle 中则可以在module 中省掉。repositories {jcenter()}dependencies { // 加入android build toolsclasspath 'com.android.tools.build:gradle:1.1.1'}
}
apply plugin: 'com.android.application' repositories { // 配置仓库 jcenter() } android { // android 工程配置 compileSdkVersion 22 buildToolsVersion "22.0.1" signingConfigs { // 签名,你可以配置多个签名,然后再在buildTypes 进行指定。 release { storeFile file("keystore\\key.jks") // 签名文件存放路径 storePassword "your.password" keyAlias "your.alias" keyPassword "password" } } packagingOptions { // 打包配置 exclude 'META-INF/LICENSE' // 排除一些文件 exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } lintOptions { // 打包时,也不因为出错中断。 checkReleaseBuilds false abortOnError false } defaultConfig { // SDK 和版本号配置 minSdkVersion 8 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { // 打包版本配置 release { signingConfig signingConfigs.release // 指定签名配置 runProguard false // 是否进行Proguard proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } debug { // signingConfig signingConfigs.release // 如果你的debug版本也需要签名,请将这一行配置解开注释 } } sourceSets { // 工程结构配置 main { java.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] // 配置此处才会打包jni 的.so 文件 manifest.srcFile 'AndroidManifest.xml' } } } dependencies { // 依赖配置 compile fileTree(dir: 'libs', include: ['*.jar']) // 整合所有libs 文件夹中的jar 包 compile 'com.android.support:support-v4:21.0.0' compile 'com.android.support:gridlayout-v7:21.0.0' compile 'com.android.support:appcompat-v7:20.0.0' compile 'com.loopj.android:android-async-http:1.4.5' // Maven 中存在的项目 compile('com.fasterxml.jackson.core:jackson-databind:2.4.1.3') { // 需要配置 packagingOptions 'META-INF/LICENSE' NOTICE transitive = true } } apply plugin: 'idea' // 加载idea 插件 idea { module { downloadJavadoc = true // 下载依赖项目的文档 downloadSources = true // 下载依赖项目的源码 } }

library modue build.gradle 文件示例

请注意,以下的配置的某些版本号已经过时,请根据自己的sd配置最新的版本号

apply plugin: 'com.android.library' // 配置为libraryrepositories {jcenter()
}android {compileSdkVersion 21 buildToolsVersion "21.1.1" defaultConfig { minSdkVersion 9 targetSdkVersion 21 } sourceSets { // 工程结构配置 main { java.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] // 配置此处才会打包jni 的.so 文件 manifest.srcFile 'AndroidManifest.xml' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' compile 'com.android.support:support-v4:21.0.0' }

local.properties文件

在OS X 系统中,你的工程需要这个文件来告诉工具的gradle 插件,你的sdk在哪。如果不进行配置的话将不能使用gradle 插件中的clean build 等方便的功能。

echo sdk.dir=$ANDROID_HOME >local.properties

迁移ADT/ANT构建的Android项目至Gradle,a walk through。相关推荐

  1. Android应用开发高效工具集1---ant构建简单Android项目

    在java编译那些事儿中提到了用ant去编译Java项目,今天扩展到用它来构建Android项目,其实道理是相通的,变化的只是使用的形式.ant构建相比IDE的好处是多个子项目使用自定义jar包时,a ...

  2. android 项目build.gradle,Android build.gradle 配置详解

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Gradle 简介 Android Studio 是采用 Gradle 来构建项目的.Gradle 是一个非常先进的项目 ...

  3. Android 项目编译 Gradle 配置说明

    前言   Android 的Gradle版本更新换代还是很快的,更新换代除了功能上变得强大之外,还会出现很多意料之外的Bug,而很多开发者会被折磨的死去活来,下面我们来看有哪些编译配置. 正文   首 ...

  4. 图解使用Ant构建一个Java项目

    先下载ant,解压到一个目录:添加环境变量ant_home,把ant的bin目录添加到path环境变量: 完成之后检查一下,在命令行输入ant,出现找不到build.xml的提示:表示ant安装配置好 ...

  5. Android Studio目录结构和Gradle构建Android项目

    一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...

  6. Gradle【有与无】【运行Gradle构建】【G8_2】Gradle Enterprise Gradle插件用户手册

    目录 Gradle Enterprise Gradle插件用户手册 1.设定 1.1.应用插件 1.1.1.Gradle 6.x及更高版本 1.1.2.Gradle 5.x 1.2.连接到Gradle ...

  7. Android Studio build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  8. ant构建项目迁移到gradle_Gradle这么弱还跑来面腾讯?

    点击上方"刘望舒",选择"星标"  多点在看,就是真爱 作者: 厘米姑娘(腾讯开发妹子)| 来源 :公号 码个蛋 https://www.jianshu.com ...

  9. android项目两种构建方式的整合(Eclipse/idea和Android Studio)

    android的两种构建方式 目前android主要有两种构建方式,一种基于ant(传统的),另一种是13年Google/IO上新推出基于Gralde的构建(Android Studio).从sdk的 ...

最新文章

  1. java 线程数组_Java 数组线程间可见性问题
  2. 玩了十年的射击游戏都是有情怀的,大家都是热爱CFHD的一代
  3. POJ 1936 All in All
  4. A1032. 画三角形2
  5. GNU make manual 翻译(四十三)
  6. chrome 开启 JSONview 方法,让json数据格式化显示
  7. css3自适应 fill-available、fit-content、max-content、min-content
  8. 马斯克证实:特斯拉将加大在中国的投资和研发力度
  9. C++ 不定参数(转)
  10. 06向量及其坐标表示、向量的方向角与方向余弦、向量组共线与共面的条件、向量的加法与数乘运算、向量组的线性组合、二维向量的基向量分解、三维向量的基向量分解、用坐标做向量的数乘
  11. SystemTap Errors Introduce
  12. python删除字符串中的字母_从Python中的字符串中删除除字母数字字符之外的所有内容...
  13. Android屏幕尺寸(来自网络整理)
  14. networkx节点显示、节点中心性度量
  15. 关于git的安装与配置问题
  16. 服务器四核cpu性能排行,服务器cpu性能排行
  17. 域名服务器有什么作用?怎么查询域名服务器地址?
  18. android获取安卓版本,怎么获取android系统当前版本
  19. java基础知识面试题(41-95)
  20. JavaScript实现点赞效果

热门文章

  1. jQuery弹出窗口浏览图片
  2. Java关键字介绍之final
  3. python表示数字6_【Python 1-6】Python教程之——数字
  4. 苹果工具条_苹果发布iOS 13.4首个测试版:能让iPhone变身为车钥匙
  5. 动画库NineOldAndroids
  6. c++读取json文件_SPARK入门 - json文件读取
  7. 华为首款Harmonyos摄像头,掀起家居安防大变革 华为首款HarmonyOS智能摄像头发布...
  8. python通用权限管理框架图_通用权限管理设计篇_设计模式
  9. ubuntu 14.04-LTS 系统下安装搜狗输入法
  10. android应用课程设计报告,基于Android的多媒体播放器课程设计报告.doc