ant构建项目迁移到gradle_将现有的android项目迁移到gradle (范例)

Android ant在引入Android Studio之前,android应用程序使用ant (在Eclipse和思想中)构建,

我已经有了使用ant构建的现有android应用程序,接下来我将演示如何将应用程序迁移到Gradle中,

我已经为基于ant的项目使用IntelliJ IDEA,并将Android Studio与Gradle android项目一起使用,

现有构思项目下面是我的退出项目(使用ant构建)

21ba166b5dac5fdaf66555c886494d5c.png项目名称是SenZors,它包含src,res,lib,assert等,

基于Gradle的项目结构基于Gradle的项目如下所示└── project/

└── module/

└── build.gradle/

└── build.gradle

└── settings.gradle主项目包含build.gradle和settings.gradle文件,

每个模块包含单独的build.gradle文件,

项目与模块项目是完整的Android应用。 项目可以由一个或多个模块组成。

模块是可以独立生成。测试或调试的项目的组件,

有三种类型的模块Java库模块

Android库模块

Android应用程序模块在上面的项目结构module是一个应用程序模块,

许多Android应用程序只包含一个应用程序模块。 构建系统为应用程序模块生成一个APK包,

settings.gradle文件这个文件告诉gradle要构建哪些模块,例如,SenZors,include ':senz'这指定在构建SenZors项目时包含senz模块,

顶层build.gradle文件它是顶级gradle构建文件,它可以用来定义所有子模块通用的配置选项,

我将在以后给出有关此build.gradle文件内容的详细信息,

模块文件的build.gradle每个模块包含单独的build.gradle文件,因此模块可以独立构建,

它可以定义android特定的设置,依赖设置。

我将在以后讨论有关此文件内容的更多详细信息,

Gradle应用程序模块结构我的主应用程序模块名是senz,└── senz/

└── build/

└── libs/

└── src/

└── main/

└── java/

└── res/

└── asserts/

└── build.gradle将现有ant项目迁移到gradle时,我们需要根据gradle项目结构移动ant项目内容,

将SenZors迁移到gradle主要项目是SenZors,我使用senz作为主要应用模块,

定义项目结构下面是创建项目结构的步骤1. Create new application module directory `senz` in `SenZors`

mkdir -p SenZors/senz/src/main/java

2. Move source codes to senz

mv SenZors/src/com SenZors/senz/src/main/java

3. Move res and asserts

mv SenZors/res SenZors/senz/src/main

mv SenZors/asserts SenZors/senz/src/main

4. Move libs

mv SenZors/libs SenZors/senz/

5. Move AndroidManifest

mv SenZors/AndroidManifest.xml SenZors/senz/src/main

6. Create gradle build files

touch SenZors/build.gradle

touch SenZors/settings.gradle

touch SenZors/senz/build.gradle

定义settings.gradle定义要在settings.gradle文件(我们只有一个应用程序模块senz )中生成的模块,include ':senz'

顶层build.gradlebuildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'com.android.tools.build:gradle:0.9.+'

}

}

allprojects {

repositories {

mavenCentral()

}

}

# Gradle wrapper task

task wrapper(type: Wrapper) {

gradleVersion = '1.12'

}这里有两个主要部分

buildscript设置在这里 buildscript {. .. } 配置驱动生成的代码

它声明它使用Maven中央存储库,并且在Maven工件上存在类路径依赖项,

这个工件是包含Gradle插件的库在版本0.9.+中包含了,

Gradle包装任务Gradle包装器是启动Gradle构建的首选方式,

Gradle包含用于Windows支持的批脚本和shell script支持os x和Linux,

这些脚本允许你在不需要在系统(这对于实现与jenkins的集成非常有帮助)上安装Gradle的情况下运行Gradle构建,

在上面的gradle中,我们定义了gradle包装器,带有gradle版本1.12 (gradleVersion是你希望项目使用的版本),

现在执行以下命令gradle wrapper此命令将在项目的root中生成更多的文件,└── SenZors

└── gradlew

└── gradlew.bat

└── gradle

└── wrapper

└── gradle-wrapper.jar

└── gradle-wrapper.properties

. ..

└── build.gradle

└── settings.gradle第一次运行指定版本的Gradle包装器时,它会下载,并且缓存该版本的Gradle二进制文件,

这些Gradle包装器文件被设计为提交到源代码管理。

然后,谁可以在不需要首先安装和配置特定版本的Gradle的情况下构建项目,

现在你可以使用./gradlew build来构建项目,

senz模块build.gradle文件apply plugin: 'android'

android {

compileSdkVersion 19

buildToolsVersion" 19.1.0"

defaultConfig {

minSdkVersion 14

targetSdkVersion 19

versionCode 1

versionName" 1.0"

}

buildTypes {

release {

runProguard false

debuggable false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

}

debug {

debuggable true

}

}

}

dependencies {

compile 'com.android.support:appcompat-v7:19.1.0'

compile 'com.android.support:support-v4:19.1.0'

compile 'com.google.android.gms:play-services:5.+'

compile fileTree(dir: 'libs', include: ['*.jar'])

}这里有几个有趣的东西

应用插件:'android"'它应用 Android plugin for Gradle 到此版本

Android特定生成选项android %7B...%7D配置所有android特定的构建选项,

它指定SDK版本,发布/调试生成配置。

依赖项依赖项元素在android元素的外部和之后

此元素声明此模块的依赖项

与项目同步打开Android Studio并导入SenZors项目。 它将同步gradle android项目

一定要打勾 use default gradle wrapper Android Studio首选项中的选项

e1b067d9c1e9ff6447806cf2feb5446e.pngFinalised项目目录结构如下所示

6972727c2c0a3e70bdf66cc4a2040347.png

生成自# build project from command line

./gradlew build

# list all available gradle tasks

./gradlew tasks

引用


版权声明:本文为weixin_33046149原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。