Android Gradle 構建工具(Android Gradle Build Tools)是什嗎?

來源:互聯網
上載者:User

標籤:最好   開發   too   target   推出   ring   tools   native   path   

轉載地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/

譯者地址:【翻】一覽新的 Android Gradle 構建工具:新的 DSL 結構 和 Gradle 2.5

原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5

雙語對照地址: 【翻-雙語】一覽新的 Android Gradle 構建工具:新的 DSL 結構 和 Gradle 2.5

  • 翻譯: MrFu
  • 校正: MrFu

Android Studio 1.3 的平台已經接近於穩定的發布版,新的功能不斷推出,包括對NDK 的完美支援。它看起來有一些重大的改變也正在等待合適的孵化時機,如:新的 Gradle 構建工具以及新設計的 DSL (gradle 指令碼代碼結構)

在我把玩了一個小時之後,我發現它是非常有趣的,所以,我決定去寫下這篇部落格來向你們這些傢伙介紹這個構建工具即將帶來的改變,好讓你們做好準備。

Android Gradle 構建工具(Android Gradle Build Tools)是什嗎?

萬一你還不知道它呢!Android Gradle 構建工具是一個運行時用於處理 module 下的 build.gradle 檔案的,在這個檔案傳遞到 Gradle 去做進一步操作之前進行的。

Gradle Build Tools 在項目中的 build.gradle 聲明就像下面這樣:

dependencies {    classpath ‘com.android.tools.build:gradle:1.2.3‘}

每個版本的 Gradle Build Tools 可以與下面列出的受支援的 Gradle 版本協同工作。

Android Gradle Plugin Gradle
1.0.0 - 1.1.3 2.2.1 - 2.3
1.2+ 2.2.1+

在 Android Gradle Build Tools 中定義了文法規則,和我們使用的文法規則在 build.gradle 檔案中來寫 Gradle 指令碼(And the syntax we use these days to write Gradle Script in build.gradle file is defined in Android Gradle Build Tools.). 我們稱它為 DSL(Domain-Specific Language).

新的 Android Gradle 構建工具

從 Gradle Build Tools 1.0 問世以來, DSL 還沒有被動過, Android Studio 團隊決定對新的 Gradle Build Tools 做出重大的改變。它仍然在實驗階段,通過改變其基礎的 Gradle 的新組件模型機制使其顯著的減少在配置上花費的時間。然而Team Dev正在努力嘗試去移除這些通用的變化,以盡量減少從傳統的外掛程式在未來的遷移過程。(However development teams are working hard trying to remove these current changes to minimize the migration process from the traditional plugin in the future.)

不管怎麼樣,坦白的說,新的 DSL 看起來相當不錯。我必須說我對這些改變非常信服,因為這個新的 DSL 結構以及命名比現在的這個更加有意義。

嘗試新的 Gradle Build Tools 只需要簡單的在項目的 build.gradle 檔案中更改 build tools 的版本:

dependencies {    classpath ‘com.android.tools.build:gradle-experimental:0.1.0‘}

請注意, 新版本的 build tools 要與剛剛發布的 Gradle 2.5 一起使用才行,所以你需要首先安裝 Gradle2.5,在你的項目的 gradle/gradle-wrapper.properties 檔案下修改 distributionUrl 這一行:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-bin.zip

進入設定頁面( Windows 系統在 File -> Settings 或 Mac OS X 在 Android Studio -> Preferences 下),並且,確保你選擇使用的是預設配置的 gradle wrapper.

然後修改 module 的 build.gradle 檔案從這樣:

apply plugin: ‘com.android.application‘android {    compileSdkVersion 22    buildToolsVersion "23.0.0 rc3"    defaultConfig {        applicationId "com.inthecheesefactory.hellojni25"        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘        }    }}dependencies {    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])    compile ‘com.android.support:appcompat-v7:22.2.0‘}

改成這樣:

apply plugin: ‘com.android.model.application‘model {    android {        compileSdkVersion = 22        buildToolsVersion = "23.0.0 rc3"        defaultConfig.with {            applicationId = "com.inthecheesefactory.hellojni25"            minSdkVersion.apiLevel = 15            targetSdkVersion.apiLevel = 22            versionCode = 1            versionName = "1.0"        }    }    android.buildTypes {        release {            isMinifyEnabled = false            proguardFiles += file(‘proguard-rules.pro‘)        }    }}dependencies {    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])    compile ‘com.android.support:appcompat-v7:22.2.0‘}

你可以注意到結構有很大的不同。com.android.application 現在改為 com.android.model.application. 大多數屬性要求有 = 操作符,以及 += 操作符被用於添加元素(也許是多個)到集合中。以前一些屬性的名字定義的不是非常的清晰的,現在也有所調整,舉個例子:minSdkVersion 現在變成了minSdkVersion.apiLevel

好了,讓我們用 gradle 檔案同步項目去應用這些改變。

然後只需要運行它。在使用更有意義的文法規則後,一切按預期的那樣工作。使用新鮮出爐的 Gradle 2.5 構建!

試試 NDK 的支援

Android Studio 1.3 嘚瑟的宣布了完全支援 NDK。所以,讓我們用一個非常簡單的 native 代碼例子來做嘗試。首先,你需要在項目的 local.properties 檔案裡定義一個 NDK 的目錄。請注意你可以在 Android NDK Downloads Page 中顯示的 NDK r10e 和在 SDK Manager 中顯示的 NDK Bundle 都是可以使用的。

ndk.dir=PATH_TO_NDK_ROOT

建立 HelloJni.java 放在你的 Java 包下。

public class HelloJni {    public native String stringFromJNI();}

在 src/main 目錄裡面建立一個 jni 檔案夾,並且建立一個 hello-jni.c 檔案裡面寫如下的內容:

hello-jni.c

#include <string.h>#include <jni.h>jstringJava_com_inthecheesefactory_hellojni25_HelloJni_stringFromJNI( JNIEnv* env,                                                  jobject thiz ){#if defined(__arm__)  #if defined(__ARM_ARCH_7A__)    #if defined(__ARM_NEON__)      #if defined(__ARM_PCS_VFP)        #define ABI "armeabi-v7a/NEON (hard-float)"      #else        #define ABI "armeabi-v7a/NEON"      #endif    #else      #if defined(__ARM_PCS_VFP)        #define ABI "armeabi-v7a (hard-float)"      #else        #define ABI "armeabi-v7a"      #endif    #endif  #else   #define ABI "armeabi"  #endif#elif defined(__i386__)   #define ABI "x86"#elif defined(__x86_64__)   #define ABI "x86_64"#elif defined(__mips64)  /* mips64el-* toolchain defines __mips__ too */   #define ABI "mips64"#elif defined(__mips__)   #define ABI "mips"#elif defined(__aarch64__)   #define ABI "arm64-v8a"#else   #define ABI "unknown"#endif    return (*env)->NewStringUTF(env, "Hello from JNI !!  Compiled with ABI " ABI ".");}

請不要忘記將 com_inthecheesefactory_hellojni25 改變成對應的 HelloJni.java 的包名,否則它是不工作的。

對於那些熟悉 NDK 的人,你可能注意到了 Makefiles 已經不再需要了。

這是最終的檔案目錄:

現在,讓我們在 MainActivity.java 中測試這段 JNI 代碼,把下面這段代碼放到 MainActivity 類的最後一行:

public class MainActivity extends AppCompatActivity {    ...    static {        System.loadLibrary("hello-jni");    }}

修改 onCreate 就像這樣:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Toast.makeText(MainActivity.this,                    new HelloJni().stringFromJNI(),                    Toast.LENGTH_LONG)            .show();}

duang~完成!現在,你可以通過 Java 代碼來使用 native 代碼了,運行試試吧

隨著在 Android Studio 上令人驚歎的完全支援 NDK,Java 代碼現和 Native 代碼現在可以配合更加天衣無縫。如果你在 Java 中調試代碼,它將會跳轉到 native 代碼的正確位置。(譯者:這點還真是令人驚歎喔!)

不管怎麼說,它仍然處於實驗階段,某些功能仍在開發中。對於嚴肅的使用者來說,最好等到它最終發布吧。

結論

我必須說新的 Gradle Build Tools 是非常有趣的。主要改變的 DSL 看起來非常有前途,並且對於現在的來說具有更深遠的意義。優秀的代碼應該能告訴我們它能做什麼(譯者:能從字面意思理解這段代碼的意思),對吧?

然後它仍然還處於實驗階段。這個 DSL 還不是最終的版本,我們最好只是學習和瞭解他的存在,而不是現在立刻就切換到這個新的版本。不管怎麼說,我相信距離它發布可供實際使用的穩定版本不會很久了。做好準備吧!

 

引用原文:http://blog.csdn.net/lijinhua7602/article/details/48596955

 

寫部落格是為了記住自己容易忘記的東西,另外也是對自己工作的總結,文章可以轉載,無需著作權。希望盡自己的努力,做到更好,大家一起努力進步!

如果有什麼問題,歡迎大家一起探討,代碼如有問題,歡迎各位大神指正!

Android Gradle 構建工具(Android Gradle Build Tools)是什嗎?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.