AndroidGradle怎么配置

本篇內(nèi)容介紹了“Android Gradle怎么配置”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。

AndroidStudio中Gradle文件 

我們新建一個(gè)Android項(xiàng)目,AndroidStudio會(huì)默認(rèn)為我們生成以下幾個(gè)文件,Project的構(gòu)建文件,Module的構(gòu)建文件,Project配置文件,混淆規(guī)則文件等,那么這些文件都具有什么功能,我們又可以進(jìn)行何種配置呢?

  • settings.gradle

include ':app'

新建的工程,默認(rèn)只有上述一條語句,用于指示 Gradle  在構(gòu)建應(yīng)用時(shí)應(yīng)將哪些模塊包括在內(nèi)。對(duì)大多數(shù)項(xiàng)目而言,該文件可能只有上述一條,但是當(dāng)我們項(xiàng)目中,引入了其它的功能module,或者業(yè)務(wù)邏輯module,就需要我們?cè)趇nclude語句中添加相應(yīng)的module。

  • build.gradle

build文件有兩個(gè),一個(gè)是針對(duì)我們的Module,一個(gè)是針對(duì)Project。

在Project中,默認(rèn)生成如下配置

// Top-level build file where you can add configuration options common to all sub-projects/modules.  buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:2.2.3'          // NOTE: Do not place your application dependencies here; they belong in the individual module build.gradle files     } }

在Project的build文件中,我們可以來添加一些子module所共有的一些配置,而無需單獨(dú)在每一個(gè)子module中進(jìn)行配置。可進(jìn)行依賴倉庫是jcenter還是其它依賴倉庫等。在module中默認(rèn)生成的是對(duì)于我們的module自身構(gòu)建的時(shí)候進(jìn)行的一些配置選項(xiàng)。

  • gradle.properties

為gradle的配置文件,里面可以定義一些常量供build.gradle使用,如版本號(hào)等,當(dāng)隨著我們的業(yè)務(wù)增長(zhǎng),build文件也會(huì)變大,可維護(hù)性變差,當(dāng)我們想修改一些內(nèi)容的時(shí)候,需要逐個(gè)去找,但是,當(dāng)我們將其中的一些配置常量放置在一個(gè)單獨(dú)的文件中,相比之前,可維護(hù)性就有所提升。我們可以將構(gòu)建SDK版本等一些信息添加到該文件中。

COMPILE_SDK_VERSION = 23BUILD_TOOLS_VERSION = 23.0.1VERSION_CODE = 1

然后,我們就可以在build文件中進(jìn)行引用了。引用方式,直接通過變量名就可以。

配置構(gòu)建

  • 構(gòu)建類型

構(gòu)建類型定義 Gradle 在構(gòu)建和打包您的應(yīng)用時(shí)使用的某些屬性,通常針對(duì)開發(fā)生命周期的不同階段進(jìn)行配置。例如,調(diào)試構(gòu)建類型支持調(diào)試選項(xiàng),使用調(diào)試密鑰簽署  APK;而發(fā)布構(gòu)建類型則可壓縮、混淆 APK 以及使用發(fā)布密鑰簽署 APK 進(jìn)行分發(fā)。您必須至少定義一個(gè)構(gòu)建類型才能構(gòu)建應(yīng)用——Android Studio  默認(rèn)情況下會(huì)創(chuàng)建調(diào)試和發(fā)布構(gòu)建類型。要開始為應(yīng)用自定義打包設(shè)置,請(qǐng)學(xué)習(xí)如何配置構(gòu)建類型。

默認(rèn)構(gòu)建方式

defaultConfig {        applicationId "com.chenjensen.gradlelearn"         minSdkVersion 14         targetSdkVersion 24         versionCode 1         versionName "1.0"         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}

我們可以根據(jù)自己的需求,比如只針對(duì)發(fā)布的版本進(jìn)行混淆等操作,而對(duì)于debug版本不進(jìn)行,我們可以在buildType中進(jìn)行配置。

buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {                    }   }
  • 產(chǎn)品風(fēng)味

產(chǎn)品風(fēng)味代表您可以發(fā)布給用戶的不同應(yīng)用版本,例如免費(fèi)和付費(fèi)的應(yīng)用版本。您可以將產(chǎn)品風(fēng)味自定義為使用不同的代碼和資源,同時(shí)對(duì)所有應(yīng)用版本共有的部分加以共享和重復(fù)利用。產(chǎn)品風(fēng)味是可選項(xiàng),并且您必須手動(dòng)創(chuàng)建。我們可以在productFlavors  {} 代碼塊中配置我們所需要的的設(shè)置。產(chǎn)品風(fēng)味支持與 defaultConfig 相同的屬性,這是因?yàn)?defaultConfig 實(shí)際上屬于  ProductFlavor 類。這意味著,您可以在 defaultConfig {} 代碼塊中提供所有風(fēng)味的基本配置,每種風(fēng)味均可替換任何默認(rèn)值,例如  applicationId。

ApplicationId用來作為我們的APK的包名,用來對(duì)于不同的包的區(qū)分,對(duì)于manifest中的package字段則是用來命名資源類的包名,***生成的  R 類文件位于該包下,如果其他包里面的代碼需要引用資源時(shí)可通過該路徑進(jìn)行調(diào)用。

例如

productFlavors {        demo {            applicationId "com.example.myapp.demo"             versionName "1.0-demo"         }         full {            applicationId "com.example.myapp.full"             versionName "1.0-full"         }     }

通過對(duì)于產(chǎn)品風(fēng)味的配置,我們可以針對(duì)不同的應(yīng)用市場(chǎng)發(fā)布不同的應(yīng)用包,針對(duì)不同的應(yīng)用包,我們可以進(jìn)行細(xì)致化到具體的SDK版本等的配置。采用的不同的應(yīng)用市場(chǎng)分發(fā),可以讓我們針對(duì)不同應(yīng)市場(chǎng)下發(fā)下的下載率的采集。

  • 依賴項(xiàng)

構(gòu)建系統(tǒng)管理來自您的本地文件系統(tǒng)以及來自遠(yuǎn)程存儲(chǔ)區(qū)的項(xiàng)目依賴項(xiàng)。這樣一來,您就不必手動(dòng)搜索、下載依賴項(xiàng)的二進(jìn)制文件包以及將它們復(fù)制到項(xiàng)目目錄內(nèi)。

Android中有三種添加依賴的方式

//依賴我們本地的module compile project(":mylibrary") //遠(yuǎn)程的二進(jìn)制依賴項(xiàng) compile 'com.android.support:appcompat-v7:25.1.0' //本地二進(jìn)制依賴方式,將檢測(cè)我們的本地的libs中的jar文件 compile fileTree(dir: 'libs', include: ['*.jar']) //javaTest依賴 testCompile 'junit:junit:4.12'     //AndroidTest依賴 androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

當(dāng)我們添加了一個(gè)依賴,該依賴還依賴了其它的依賴,而我們想把其中的一個(gè)依賴去掉,compile方法,可以接受一個(gè)閉包參數(shù),我們可以利用這個(gè)閉包來將其中的部分依賴剔出掉。

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {         exclude group: 'com.android.support', module: 'support-annotations'     })

通過compile配置,Gradle 將此配置的依賴項(xiàng)添加到類路徑和應(yīng)用的 APK。除了compile配置,還有apk,provided。

  • apk

指定 Gradle 需要將其與應(yīng)用的 APK 一起打包的僅運(yùn)行時(shí)依賴項(xiàng)。您可以將此配置與 JAR 二進(jìn)制依賴項(xiàng)一起使用,而不能與其他庫模塊依賴項(xiàng)或 AAR  二進(jìn)制依賴項(xiàng)一起使用。

  • provided

指定 Gradle 不與應(yīng)用的 APK 一起打包的編譯時(shí)依賴項(xiàng)。如果運(yùn)行時(shí)無需此依賴項(xiàng),這將有助于縮減 APK 的大小。您可以將此配置與 JAR  二進(jìn)制依賴項(xiàng)一起使用,而不能與其他庫模塊依賴項(xiàng)或 AAR 二進(jìn)制依賴項(xiàng)一起使用。

  • 簽署

構(gòu)建系統(tǒng)可以在構(gòu)建配置中指定簽署設(shè)置,并可在構(gòu)建過程中自動(dòng)簽署您的  APK。構(gòu)建系統(tǒng)通過使用已知憑據(jù)的默認(rèn)密鑰和證書簽署調(diào)試版本,以避免在構(gòu)建時(shí)提示密碼。除非為此構(gòu)建顯式定義簽署配置,否則,構(gòu)建系統(tǒng)不會(huì)簽署發(fā)布版本。如果沒有發(fā)布密鑰,可以按簽署應(yīng)用中所述生成一個(gè)。由于調(diào)試證書通過構(gòu)建工具創(chuàng)建并且在設(shè)計(jì)上不安全,大多數(shù)應(yīng)用商店(包括  Google Play 商店)都不接受使用調(diào)試證書簽署要發(fā)布的 APK。

簽署的應(yīng)用

應(yīng)用升級(jí):當(dāng)系統(tǒng)安裝應(yīng)用的更新時(shí),它會(huì)比較新版本和現(xiàn)有版本中的證書。如果證書匹配,則系統(tǒng)允許更新。如果使用不同的證書簽署新版本,則必須為應(yīng)用分配另一個(gè)軟件包名稱  - 在此情況下,用戶將新版本作為全新應(yīng)用安裝。

應(yīng)用模塊化:Android 允許通過相同證書簽署的多個(gè) APK  在同一個(gè)進(jìn)程中運(yùn)行(如果應(yīng)用請(qǐng)求這樣),以便系統(tǒng)將它們視為單個(gè)應(yīng)用。通過此方式,可以在模塊中部署您的應(yīng)用,且用戶可以獨(dú)立更新每個(gè)模塊。

在您創(chuàng)建簽署配置時(shí),Android Studio 會(huì)以純文本形式將您的簽署信息添加到模塊的 build.gradle  文件中。如果是團(tuán)隊(duì)協(xié)作開發(fā)或者將您代碼開源,那么應(yīng)當(dāng)將此敏感信息從構(gòu)建文件中移出,以免被其他人輕易獲取。為此,創(chuàng)建一個(gè)單獨(dú)的屬性文件來存儲(chǔ)安全信息。然后在本地獲取外部文件的配置,然后在發(fā)布代碼的時(shí)候,保留我們的秘鑰配置文件。

  • 在項(xiàng)目的根目錄下創(chuàng)建一個(gè)名稱為 keystore.properties 的文件。

storePassword=myStorePasswordkeyPassword=mykeyPasswordkeyAlias=myKeyAliasstoreFile=myStoreFileLocation
  • 在模塊的 build.gradle 文件中,于 android {} 塊的前面添加用于加載 keystore.properties 文件的代碼

def keystorePropertiesFile = rootProject.file("keystore.properties")// Initialize a new Properties() object called keystoreProperties.def keystoreProperties = new Properties()// Load your keystore.properties file into the keystoreProperties object.keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
  • 使用語法 keystoreProperties['屬性名稱'] 引用存儲(chǔ)在 keystoreProperties 中的屬性。修改模塊  build.gradle 文件的 signingConfigs 塊,以便使用此語法引用存儲(chǔ)在 keystoreProperties 中的簽署信息。

android {    signingConfigs {        config {            keyAlias keystoreProperties['keyAlias']             keyPassword keystoreProperties['keyPassword']             storeFile file(keystoreProperties['storeFile'])             storePassword keystoreProperties['storePassword']         }     }     ...   }
  • ProGuard

構(gòu)建系統(tǒng)讓您能夠?yàn)槊總€(gè)構(gòu)建變體指定不同的 ProGuard 規(guī)則文件。構(gòu)建系統(tǒng)可在構(gòu)建過程中運(yùn)行 ProGuard 對(duì)類進(jìn)行壓縮和混淆處理。代碼壓縮通過  ProGuard 提供,ProGuard 會(huì)檢測(cè)和移除封裝應(yīng)用中未使用的類、字段、方法和屬性,包括自帶代碼庫中的未使用項(xiàng)(這使其成為以變通方式解決 64k  引用限制的有用工具)。ProGuard 還可優(yōu)化字節(jié)碼,移除未使用的代碼指令,以及用短名稱混淆其余的類、字段和方法?;煜^的代碼可令您的 APK  難以被逆向工程。對(duì)于ProGuard更詳細(xì)的介紹可以參考之前關(guān)于項(xiàng)目構(gòu)建的文章。

開啟代碼壓縮

minifyEnabled true

啟用ProGuard規(guī)則

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

'proguard-rules.pro'

  1. getDefaultProguardFile(‘proguard-android.txt') 方法可從 Android SDK  tools/proguard/ 文件夾獲取默認(rèn) ProGuard 設(shè)置。

  2. proguard-rules.pro 文件用于添加自定義 ProGuard 規(guī)則。默認(rèn)情況下,該文件位于模塊根目錄

每次執(zhí)行完成ProGuard之后,都會(huì)產(chǎn)生如下文件

  • dump.txtAPK 中所有類文件的內(nèi)部結(jié)構(gòu)。

  • mapping.txt提供原始與混淆過的類、方法和字段名稱之間的轉(zhuǎn)換。

seeds.txt

列出未進(jìn)行混淆的類和成員。

usage.txt

列出從 APK 移除的代碼。

這些文件保存在 <module-name>/build/outputs/mapping/release/。

對(duì)于其中一些類,我們不想對(duì)其進(jìn)行混淆的,需要我們?cè)赑roGuard 配置文件中添加一行 -keep 代碼。例如:

-keep public class MyClass

“Android Gradle怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)頁題目:AndroidGradle怎么配置
當(dāng)前URL:http://bm7419.com/article24/jdghce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、企業(yè)建站建站公司、服務(wù)器托管商城網(wǎng)站、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)