帮酷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 wrapperAndroid 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  |  如果智培  |  酷兔英语