帮酷LOGO
0 0 评论
文章标签:Gradle  exi  proj  

Android ant

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

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

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

现有构思项目

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

Picture

  • 项目名称是SenZors,它包含src,res,lib,assert等,

基于Gradle的项目结构

  • 基于Gradle的项目如下所示
 

└── project/
 └── module/
 └── build.gradle/
 └── build.gradle
 └── settings.gradle
  • 主项目包含build.gradlesettings.gradle文件,

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

项目与模块

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

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

  • 有三种类型的模块

  1. Java库模块
  2. Android库模块
  3. Android应用程序模块

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.gradle

 

buildscript {
 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来构建项目,

  • 有关Gradle包装器的更多信息- http://www.gradle.org/docs/current/userguide/gradle_wrapper.html

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首选项中的选项

Picture

  • Finalised项目目录结构如下所示

Picture

生成自

 

# build project from command line
./gradlew build

# list all available gradle tasks 
./gradlew tasks

引用

  1. http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/
  2. http://developer.android.com/sdk/installing/studio-build.html
  3. http://spring.io/guides/gs/gradle-android/
  4. http://gmariotti.blogspot.it/2013/10/common-tips-about-gradle.html
  5. http://tools.android.com/tech-docs/new-build-system/user-guide


文章标签:proj  exi  Gradle  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语