日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

欲了解Android Studio,必先知道Gradle

發布時間:2025/3/20 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 欲了解Android Studio,必先知道Gradle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0126/2361.html

泡在網上的日子 發表于 2015-01-26 13:28??11306?次閱讀?Gradle,Android Studio

編輯推薦:稀土掘金,這是一個高質量的技術干貨分享社區,web前端、Android、iOS、設計資源和產品,滿足你的學習欲望。

在前面的文章Android Studio初體驗?一文中,我們新建了一個項目,其中提到了向導所產生的build.gradle文件,我們也大致看了build.gradle中的腳本內容,這篇文章將對gradle作更詳細的講解 。這篇文章我們將介紹Gradle的安裝、Gradle的基本語法、Gradle的打包,內容會比較枯燥,但是對build.gradle腳本中參數的解釋這部分還是非常有用的。Gradle是Eclipse開發轉android studio的攔路虎, 我們必須攻克它。??

注:這篇文章的大部分內容主要是直接復制了這篇文章:http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html?


什么是Gradle?

Gradle 以module 來管理project,在Gradle 構建的Gradle project中通常包含application module(com.android.application),與library module(com.android.library)兩種module。

在Gradle 的project 中需要使用,基本上全都使用.gradle 文件來配置,是一個腳本化的工程構建,而非原先ADT中那種eclipse 的可視化構建。gradle的依賴管理能力極其強大,幾乎所有的開源項目都可以簡單的通過一條compile指令完成依賴的配置。

安裝Gradle

第一次新建項目成功會下載Gradle,貌似這個過程不翻墻也是可以下載,但是訪問特別慢,建議翻墻下載。那么下載的Gradle到什么地方呢?

  • Mac上會默認下載到 **/Users/<用戶名>/.gradle/wrapper/dists** 目錄

  • Win平臺會默認下載到?C:\Documents and Settings<用戶名>.gradle\wrapper\dists?目錄

你會看到這個目錄下有個 gradle-x.xx-all 的文件夾, 如果下載實在太慢,但是又不想翻墻的話,可以自己手動到Gradle官網下載對應的版本,然后將下載的.zip文件(也可以解壓)復制到上述的gradle-x.xx-all 文件夾下,不過還是建議讓它直接下載的好。

首先我們學習幾個gradle 的腳步語法,掌握了這幾個語法,你就能非常簡單的用gradle構建打包android項目了。 首先,我們來看下一個最簡單android?build.gradle。

build.gradle

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 buildscript?{ ???????? ?????repositories?{ ????????????mavenCentral() ????????} ????????dependencies?{ ????????????classpath?'com.android.tools.build:gradle:0.4' ????????} ????} ????apply?plugin:?'android' ????android?{ ????????compileSdkVersion?17 ????}

英語的介紹都來自與 gradle官方文檔, 主要后邊的中文不是翻譯,是補充介紹。。

buildscript{}

Configures the build script classpath for this project. 說白了就是設置腳本的運行環境

repositories{}

Returns a handler to create repositories which are used for retrieving dependencies and uploading artifacts produced by the project. 大意就是支持java 依賴庫管理(maven/ivy),用于項目的依賴。這也是gradle 強力的地方。。。

dependencies{}

The dependency handler of this project. The returned dependency handler instance can be used for adding new dependencies. For accessing already declared dependencies, the configurations can be used. 依賴包的定義。支持maven/ivy,遠程,本地庫,也支持單文件,如果前面定義了repositories{}maven 庫,使用maven的依賴(我沒接觸過ivy。。)的時候只需要按照用類似于com.android.tools.build:gradle:0.4,gradle 就會自動的往遠程庫下載相應的依賴。

apply plugin:

聲明構建的項目類型,這里當然是android了。。。

android{}

設置編譯android項目的參數,接下來,我們的構建android項目的所有配置都在這里完成。

首先,你要安裝Gradle 1.6?并且,寫進系統的環境變量里面,所有的命令都是默認你已經配好了gradle 的環境。而且,已經已經升級了android sdk 22

要用gradle構建你的有兩種方式:(build.gradle 放到項目目錄下

  • 利用adt 22導出 build.gradle.

  • 復制別人寫好的build.gradle 文件.

  • 根據gradle 規則,手寫android 的build.gradle 文件。

  • 個人推薦1,2 方法。。。。

    一個android build.gradle 最基本基本文件

    build.gradle

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 buildscript?{ ????repositories?{ ????????mavenCentral() ????} ????dependencies?{ ????????classpath?'com.android.tools.build:gradle:0.4' ????} } apply?plugin:?'android'dependencies?{ } android?{ ????compileSdkVersion?17 ????buildToolsVersion?"17" ????defaultConfig?{ ????????minSdkVersion?8 ????????targetSdkVersion?17 ????} ????sourceSets?{ ????????main?{ ????????????manifest.srcFile?'AndroidManifest.xml' ????????????java.srcDirs?=?['src'] ????????????resources.srcDirs?=?['src'] ????????????aidl.srcDirs?=?['src'] ????????????renderscript.srcDirs?=?['src'] ????????????res.srcDirs?=?['res'] ????????????assets.srcDirs?=?['assets'] ????????} ????????instrumentTest.setRoot('tests') ????} }

    接著在命令行cd 到項目目錄下

    例如: cd e:\workplace\andoridGradle

    如果你是第一次使用gradle 構建android項目建議你先使用gradle clean?把android gradle 插件,還有相關依賴包下載下來并且對環境進行初始化,如果出錯了,一般可能是下載超時,試多幾次即可,最后你會看到如下提示:BUILD SUCCESSFUL

    The TaskContainer.add() method has been deprecated and is scheduled to be remove d in Gradle 2.0. Please use the create() method instead.

    :clean UP-TO-DATE

    BUILD SUCCESSFUL

    Total time: 7.847 secs

    完成以上的步驟,就可以正式使用gralde 構建你的android項目了。

    然后使用gradle build?就完成了android 項目的構建了。如果,你是照著以上步驟走的話,你將會想項目目錄里面看到一個build 的目錄,里面就是用gradle 構建android項目的全部例如了,結構目錄看附錄。

    最終打包的apk 就在build/apk 目錄下了。然后,你會發現,兩個apk 一個是?[項目名]-debug-unaligned?[項目名]-release-unsigned

    如果以上內容你都掌握的話,接下來就將詳細說說如何利用gralde 打包android apk。

    上面說了一大堆東西,其實并不吸引人去使用gradle,如果只是構建項目的話,adt不是更合適嗎?如果,你看完以下內容還是這么覺得的話,你就沒必要折騰gradle了。。。。。。

    看附錄 默認輸出?release?apk 是沒有簽名的,那么我們需要簽名的很簡單,只需要在android{}里面補充加上加上即可。完整build.gradle 請點擊我的gist

    build.gradle

    1 2 3 4 5 6 7 8 9 10 11 12 13 signingConfigs?{ ???myConfig{ ?????storeFile?file("gradle.keystore") ????????storePassword?"gradle" ????????keyAlias?"gradle" ????????keyPassword?"gradle" ????}} ????? ???buildTypes{ ?????release?{ ????????signingConfig??signingConfigs.myConfig ?????}? ???}

    然后,運行gradle clean?gradle build?,這次在build/apk 你看到了多了一個[項目名]-release-unaligned, 從字面上面我就可以知道,這個只是沒有進行zipAlign 優化的版本而已。而[項目名]-release 就是我們簽名,并且zipAlign 的apk包了. ###打混淆包### 只需要在原來的基礎上加上,完整的proguad.gradle 代碼?build.gradle

    1 2 3 4 5 6 7 buildTypes{ ???release?{ ???signingConfig??signingConfigs.myConfig ?????runProguard?true ?????proguardFile?'proguard-android.txt' ???} }

    gradle clean

    gradle build

    現在來解釋一下上一節的問題,apk目錄下的兩個apk 的含義

    為什么產生了兩個apk?

    默認的android gralde 插件定義了兩種apk 的類型debug,?release,這兩種類型的詳細對比看附錄。

    這個是android gralde 插件?buildTypes{}?方法產生的,默認配置好了兩個默認模板,當然你也可以修改,前面我們就是在修改默認的release 的配置,讓輸出release類型的的apk,具有簽名和混淆。

    對于多渠道包,android 插件提供了一個名為Product Flavor{}?的配置,用于進行多渠道打包。

    例如,我的android應用有海外版,和國內版本,而且這兩個版本的包名是不一樣的!!(我就舉兩個市場的例子安裝這個思路,你要打包100個不同的市場只是幾行代碼的事情。)。

    你只需要在android{}?補充上

    build.gradle

    1 2 3 4 5 6 7 8 productFlavors?{ ????playstore?{ ????????????packageName='com.youxiachai.androidgradle.playstore' ????} ????hiapk?{ ????????????packageName='com.youxiachai.androidgradle.amazonappstore' ????} }

    然后gradle clean,gradle build,在build/apk 下面你會看到一堆的包,命名格式[項目名]-[渠道名]-release

    僅此而已?

    Product Flavor{}?不只是能改包名那么簡單,還能夠對編譯的源碼目錄進行切換。

    什么意思? 不知道各位有沒有用過友盟做用戶統計,如果,你用的是分發渠道分析,你需要修改AndroidManifest.xml 添加上?<meta-data android:value="hiapk" android:name="UMENG_CHANNEL"/>

    如果,你很多渠道,,然后你就會很痛苦,現在用gradle 就非常舒服,你只需要在android.sourceSets指定我們的渠道名就行,android gradle 插件,會自動打包!!!例如

    build.gradle

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sourceSets?{ ????main?{ ????????manifest.srcFile?'AndroidManifest.xml' ????????java.srcDirs?=?['src'] ????????resources.srcDirs?=?['src'] ????????aidl.srcDirs?=?['src'] ????????renderscript.srcDirs?=?['src'] ????????res.srcDirs?=?['res'] ????????assets.srcDirs?=?['assets'] ????} ????????? ????hiapk?{ ??????????manifest.srcFile?'hiapk/AndroidManifest.xml' ????}?????? ?????????playstore?{ ?????????????manifest.srcFile?'hiapk/AndroidManifest.xml' ????} ???????? ????instrumentTest.setRoot('tests') ????????}


    然后運行gradle clean,gradle build,省下的時間去喝杯咖啡,睡個覺什么 的都好。。。 ###外部依賴### android gradle 對于外部jar 包的應用支持maven/ivy 管理的包,也支持指定具體文件,前面已經在上文說過。上面演示的完整 build.gradle gist 里面也有寫。你需要加上如下代碼即可: build.gradle

    1 2 3 dependencies?{ ????compile?files('libs/android-support-v4.jar') }

    ?

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的欲了解Android Studio,必先知道Gradle的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。