本篇內(nèi)容介紹了“Android Gradle怎么配置”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機網(wǎng)站制作設(shè)計等網(wǎng)站方面業(yè)務(wù)。
AndroidStudio中Gradle文件
我們新建一個Android項目,AndroidStudio會默認為我們生成以下幾個文件,Project的構(gòu)建文件,Module的構(gòu)建文件,Project配置文件,混淆規(guī)則文件等,那么這些文件都具有什么功能,我們又可以進行何種配置呢?
settings.gradle
include ':app'
新建的工程,默認只有上述一條語句,用于指示 Gradle 在構(gòu)建應(yīng)用時應(yīng)將哪些模塊包括在內(nèi)。對大多數(shù)項目而言,該文件可能只有上述一條,但是當我們項目中,引入了其它的功能module,或者業(yè)務(wù)邏輯module,就需要我們在include語句中添加相應(yīng)的module。
build.gradle
build文件有兩個,一個是針對我們的Module,一個是針對Project。
在Project中,默認生成如下配置
// 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所共有的一些配置,而無需單獨在每一個子module中進行配置??蛇M行依賴倉庫是jcenter還是其它依賴倉庫等。在module中默認生成的是對于我們的module自身構(gòu)建的時候進行的一些配置選項。
gradle.properties
為gradle的配置文件,里面可以定義一些常量供build.gradle使用,如版本號等,當隨著我們的業(yè)務(wù)增長,build文件也會變大,可維護性變差,當我們想修改一些內(nèi)容的時候,需要逐個去找,但是,當我們將其中的一些配置常量放置在一個單獨的文件中,相比之前,可維護性就有所提升。我們可以將構(gòu)建SDK版本等一些信息添加到該文件中。
COMPILE_SDK_VERSION = 23BUILD_TOOLS_VERSION = 23.0.1VERSION_CODE = 1
然后,我們就可以在build文件中進行引用了。引用方式,直接通過變量名就可以。
配置構(gòu)建
構(gòu)建類型
構(gòu)建類型定義 Gradle 在構(gòu)建和打包您的應(yīng)用時使用的某些屬性,通常針對開發(fā)生命周期的不同階段進行配置。例如,調(diào)試構(gòu)建類型支持調(diào)試選項,使用調(diào)試密鑰簽署 APK;而發(fā)布構(gòu)建類型則可壓縮、混淆 APK 以及使用發(fā)布密鑰簽署 APK 進行分發(fā)。您必須至少定義一個構(gòu)建類型才能構(gòu)建應(yīng)用——Android Studio 默認情況下會創(chuàng)建調(diào)試和發(fā)布構(gòu)建類型。要開始為應(yīng)用自定義打包設(shè)置,請學習如何配置構(gòu)建類型。
默認構(gòu)建方式
defaultConfig { applicationId "com.chenjensen.gradlelearn" minSdkVersion 14 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}
我們可以根據(jù)自己的需求,比如只針對發(fā)布的版本進行混淆等操作,而對于debug版本不進行,我們可以在buildType中進行配置。
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { } }
產(chǎn)品風味
產(chǎn)品風味代表您可以發(fā)布給用戶的不同應(yīng)用版本,例如免費和付費的應(yīng)用版本。您可以將產(chǎn)品風味自定義為使用不同的代碼和資源,同時對所有應(yīng)用版本共有的部分加以共享和重復(fù)利用。產(chǎn)品風味是可選項,并且您必須手動創(chuàng)建。我們可以在productFlavors {} 代碼塊中配置我們所需要的的設(shè)置。產(chǎn)品風味支持與 defaultConfig 相同的屬性,這是因為 defaultConfig 實際上屬于 ProductFlavor 類。這意味著,您可以在 defaultConfig {} 代碼塊中提供所有風味的基本配置,每種風味均可替換任何默認值,例如 applicationId。
ApplicationId用來作為我們的APK的包名,用來對于不同的包的區(qū)分,對于manifest中的package字段則是用來命名資源類的包名,***生成的 R 類文件位于該包下,如果其他包里面的代碼需要引用資源時可通過該路徑進行調(diào)用。
例如
productFlavors { demo { applicationId "com.example.myapp.demo" versionName "1.0-demo" } full { applicationId "com.example.myapp.full" versionName "1.0-full" } }
通過對于產(chǎn)品風味的配置,我們可以針對不同的應(yīng)用市場發(fā)布不同的應(yīng)用包,針對不同的應(yīng)用包,我們可以進行細致化到具體的SDK版本等的配置。采用的不同的應(yīng)用市場分發(fā),可以讓我們針對不同應(yīng)市場下發(fā)下的下載率的采集。
依賴項
構(gòu)建系統(tǒng)管理來自您的本地文件系統(tǒng)以及來自遠程存儲區(qū)的項目依賴項。這樣一來,您就不必手動搜索、下載依賴項的二進制文件包以及將它們復(fù)制到項目目錄內(nèi)。
Android中有三種添加依賴的方式
//依賴我們本地的module compile project(":mylibrary") //遠程的二進制依賴項 compile 'com.android.support:appcompat-v7:25.1.0' //本地二進制依賴方式,將檢測我們的本地的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'
當我們添加了一個依賴,該依賴還依賴了其它的依賴,而我們想把其中的一個依賴去掉,compile方法,可以接受一個閉包參數(shù),我們可以利用這個閉包來將其中的部分依賴剔出掉。
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })
通過compile配置,Gradle 將此配置的依賴項添加到類路徑和應(yīng)用的 APK。除了compile配置,還有apk,provided。
apk
指定 Gradle 需要將其與應(yīng)用的 APK 一起打包的僅運行時依賴項。您可以將此配置與 JAR 二進制依賴項一起使用,而不能與其他庫模塊依賴項或 AAR 二進制依賴項一起使用。
provided
指定 Gradle 不與應(yīng)用的 APK 一起打包的編譯時依賴項。如果運行時無需此依賴項,這將有助于縮減 APK 的大小。您可以將此配置與 JAR 二進制依賴項一起使用,而不能與其他庫模塊依賴項或 AAR 二進制依賴項一起使用。
簽署
構(gòu)建系統(tǒng)可以在構(gòu)建配置中指定簽署設(shè)置,并可在構(gòu)建過程中自動簽署您的 APK。構(gòu)建系統(tǒng)通過使用已知憑據(jù)的默認密鑰和證書簽署調(diào)試版本,以避免在構(gòu)建時提示密碼。除非為此構(gòu)建顯式定義簽署配置,否則,構(gòu)建系統(tǒng)不會簽署發(fā)布版本。如果沒有發(fā)布密鑰,可以按簽署應(yīng)用中所述生成一個。由于調(diào)試證書通過構(gòu)建工具創(chuàng)建并且在設(shè)計上不安全,大多數(shù)應(yīng)用商店(包括 Google Play 商店)都不接受使用調(diào)試證書簽署要發(fā)布的 APK。
簽署的應(yīng)用
應(yīng)用升級:當系統(tǒng)安裝應(yīng)用的更新時,它會比較新版本和現(xiàn)有版本中的證書。如果證書匹配,則系統(tǒng)允許更新。如果使用不同的證書簽署新版本,則必須為應(yīng)用分配另一個軟件包名稱 - 在此情況下,用戶將新版本作為全新應(yīng)用安裝。
應(yīng)用模塊化:Android 允許通過相同證書簽署的多個 APK 在同一個進程中運行(如果應(yīng)用請求這樣),以便系統(tǒng)將它們視為單個應(yīng)用。通過此方式,可以在模塊中部署您的應(yīng)用,且用戶可以獨立更新每個模塊。
在您創(chuàng)建簽署配置時,Android Studio 會以純文本形式將您的簽署信息添加到模塊的 build.gradle 文件中。如果是團隊協(xié)作開發(fā)或者將您代碼開源,那么應(yīng)當將此敏感信息從構(gòu)建文件中移出,以免被其他人輕易獲取。為此,創(chuàng)建一個單獨的屬性文件來存儲安全信息。然后在本地獲取外部文件的配置,然后在發(fā)布代碼的時候,保留我們的秘鑰配置文件。
在項目的根目錄下創(chuàng)建一個名稱為 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['屬性名稱'] 引用存儲在 keystoreProperties 中的屬性。修改模塊 build.gradle 文件的 signingConfigs 塊,以便使用此語法引用存儲在 keystoreProperties 中的簽署信息。
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
ProGuard
構(gòu)建系統(tǒng)讓您能夠為每個構(gòu)建變體指定不同的 ProGuard 規(guī)則文件。構(gòu)建系統(tǒng)可在構(gòu)建過程中運行 ProGuard 對類進行壓縮和混淆處理。代碼壓縮通過 ProGuard 提供,ProGuard 會檢測和移除封裝應(yīng)用中未使用的類、字段、方法和屬性,包括自帶代碼庫中的未使用項(這使其成為以變通方式解決 64k 引用限制的有用工具)。ProGuard 還可優(yōu)化字節(jié)碼,移除未使用的代碼指令,以及用短名稱混淆其余的類、字段和方法?;煜^的代碼可令您的 APK 難以被逆向工程。對于ProGuard更詳細的介紹可以參考之前關(guān)于項目構(gòu)建的文章。
開啟代碼壓縮
minifyEnabled true
啟用ProGuard規(guī)則
proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
'proguard-rules.pro'
getDefaultProguardFile(‘proguard-android.txt') 方法可從 Android SDK tools/proguard/ 文件夾獲取默認 ProGuard 設(shè)置。
proguard-rules.pro 文件用于添加自定義 ProGuard 規(guī)則。默認情況下,該文件位于模塊根目錄
每次執(zhí)行完成ProGuard之后,都會產(chǎn)生如下文件
dump.txtAPK 中所有類文件的內(nèi)部結(jié)構(gòu)。
mapping.txt提供原始與混淆過的類、方法和字段名稱之間的轉(zhuǎn)換。
seeds.txt
列出未進行混淆的類和成員。
usage.txt
列出從 APK 移除的代碼。
這些文件保存在 <module-name>/build/outputs/mapping/release/。
對于其中一些類,我們不想對其進行混淆的,需要我們在ProGuard 配置文件中添加一行 -keep 代碼。例如:
-keep public class MyClass
“Android Gradle怎么配置”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)頁題目:AndroidGradle怎么配置
當前URL:http://www.rwnh.cn/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)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)