日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android gradle常用配置總結(jié)

本文是針對Android開發(fā)中的 build.Gradle 文件中的常用配置總結(jié),一些配置是在特定的場景下才使用,一些是為了解決一些問題才加上。所以默認還是使用在Android Studio工具中新建項目時生成的默認的 build.gradle 文件中的配置,等遇到了問題,再來加一些配置。

創(chuàng)新互聯(lián)是專業(yè)的綏江網(wǎng)站建設(shè)公司,綏江接單;提供做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行綏江網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

 
 
 
 
  1. // apply plugin: 'com.android.library' // 庫配置apply plugin: 'com.android.application' // 應(yīng)用程序配置repositories { // 引入AAR文件時,需要配置這個,AAR文件放在libs目錄中 
  2.     flatDir { 
  3.         dirs 'libs' 
  4.     } 
  5.  
  6. android { 
  7.     compileSdkVersion 25 // android編譯SDK的版本,即4.0SDK、5.0SDK等的android.jar文件 
  8.     buildToolsVersion "25.0.2" // 使用SDK中編譯工具的版本 
  9.     useLibrary "org.apache.http.legacy" // 在6.0上使用apache的httpClient包,原因是google在6.0上去掉了這個http請求庫 
  10.  
  11.     defaultConfig { 
  12.         applicationId "com.xxx" // 應(yīng)用的包名可以在AndroidMainfest.xml中使用${applicationId}的方式引用這個包名 
  13.         minSdkVersion 15 // 最小兼容版本 
  14.         targetSdkVersion 25 // 目標版本 
  15.         versionCode 1 // 應(yīng)用的版本號 
  16.         versionName SDK_VERSION // 應(yīng)用的版本名稱 
  17.         multiDexEnabled true // 啟用多dex,如果app中的代碼方法數(shù)超過65535 
  18.  
  19.         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // android單元測試配置 
  20.  
  21.     } 
  22.  
  23.    sourceSets { // 指定代碼及資源的路徑,具體可以參考這里http://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.api.AndroidSourceSet.html 
  24.         main { 
  25.             manifest.srcFile 'AndroidManifest.xml' // 指定manifest.xml路徑 
  26.             java.srcDirs = ['src'] // java文件的路徑,包名的上一層,多個目錄使用逗號分隔,如['src', 'core'] 
  27.             resources.srcDirs = ['src'] // resource資源所有的目錄,注意這里是指jar文件中包含的一些資源,如properties文件,而不是APK中的res資源 
  28.             aidl.srcDirs = ['src'] // aidl文件的目錄 
  29.             renderscript.srcDirs = ['src'] // renderscript文件的路徑 
  30.             res.srcDirs = ['res'] // android APK中的資源路徑 
  31.             assets.srcDirs = ['assets'] // android app中的asset目錄 
  32.             jniLibs.srcDirs = ['libs'] // SO庫的路徑 
  33.         } 
  34.     } 
  35.  
  36.     lintOptions { 
  37.         checkReleaseBuilds false // release編譯時禁用lint檢查 
  38.         abortOnError false // 報錯不會停止打包,除非很嚴重的很影響 
  39.         disable 'MissingTranslation', 'ExtraTranslation' // 禁用lint檢查中的一些選項 
  40.     } 
  41.  
  42.     dexOptions { 
  43.         javaMaxHeapSize "4g" // 設(shè)置編譯項目代碼時最在的堆內(nèi)存大小,否則項目過大時,編譯內(nèi)存溢出 
  44.     } 
  45.  
  46.     compileOptions { // 具體參考這里http://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.internal.CompileOptions.html 
  47.         sourceCompatibility JavaVersion.VERSION_1_7 // 設(shè)置代碼編譯的版本,一般是在使用JDK1.8時,配置這個,使編譯出來的jar包讓別人使用時更通用 
  48.         targetCompatibility JavaVersion.VERSION_1_7 
  49.     } 
  50.  
  51.     packagingOptions { 
  52.         exclude 'META-INF/DEPENDENCIES.txt' // 排除這些第三方j(luò)ar中的聲明文件,否則編譯時容易導(dǎo)致報錯 
  53.         exclude 'META-INF/LICENSE.txt' 
  54.         exclude 'META-INF/NOTICE.txt' 
  55.         exclude 'META-INF/NOTICE' 
  56.         exclude 'META-INF/LICENSE' 
  57.         exclude 'META-INF/DEPENDENCIES' 
  58.         exclude 'META-INF/notice.txt' 
  59.         exclude 'META-INF/license.txt' 
  60.         exclude 'META-INF/dependencies.txt' 
  61.         exclude 'META-INF/LGPL2.1' 
  62.     } 
  63.  
  64.     buildTypes { 
  65.          debug {             storeFile file("debug.keystore") // 簽名文件相對路徑 
  66.            storePassword "android" // 簽名的密碼 
  67.            keyAlias "androiddebugkey" // 別名 
  68.            keyPassword "android" // 別名密碼 
  69.  
  70.            buildConfigField "boolean", "FLAG_DEBUG", "true" // 在BuildConfig.的類中自動生成public static final boolean FLAG_DEBUG = true;代碼 
  71.            buildConfigField "String", "API_VERSION", "\"1\"" 
  72.             
  73.            ndk { 
  74.             abiFilters "armeabi", "armeabi-v7a" // 只保留這幾種CPU架構(gòu)的SO庫,需要高版本的gradle才支持 
  75.            }            
  76.            // jniDebuggable true // 啟用JNI debug,一般很少使用,不建議開這個選項,會影響java代碼的debug速度 
  77.         } 
  78.  
  79.         release { 
  80.             buildConfigField "boolean", "FLAG_DEBUG", "false" 
  81.             buildConfigField "String", "API_VERSION", "\"1\"" 
  82.             minifyEnabled true // 在混淆時去除代碼中無用的內(nèi)容 
  83.             shrinkResources true // 在混淆時去除無用的資源,針對res/目錄中的內(nèi)容,不用壓縮圖片的大小 
  84.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 配置混淆文件 
  85.              
  86.             ndk { 
  87.                 abiFilters "armeabi", "armeabi-v7a" // 只保留這幾種CPU架構(gòu)的SO庫,需要高版本的gradle才支持 
  88.             } 
  89.         } 
  90.     } 
  91.  
  92. dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs') // 導(dǎo)入libs目錄中的所有jar包 
  93.     androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { // 排除group中的modle,注意group和module名稱com.android.support:support-annotations 
  94.         exclude group: 'com.android.support', module: 'support-annotations' 
  95.     }) 
  96.     compile 'com.android.support:appcompat-v7:25.1.0' // 使用google的appcompat-v7包 
  97.     testCompile 'junit:junit:4.12' // 引入junit單元測試 
  98.  
  99.     compile 'com.android.support:multidex:1.0.0' // 加入加載多dex庫 
  100.     compile files('libs/gson.jar') // 引用libs目錄中的gson.jar包 
  101.     compile(name: 'HMS-SDK-2.4.0.300', ext: 'aar') // 引入HMS-SDK-2.4.0.300.aar文件,同時還需要參考文件頭部分的配置 
  102.     compile('com.facebook.fresco:fresco:1.0.0') { exclude module: 'support-v4' } // 引入fresco庫,但不使用其中引用的support-v4庫,否則導(dǎo)致重復(fù)引入,編譯報錯duplicate 
  103.     provided fileTree(dir: 'compilelibs', include: ['*.jar']) // 引入compilelibs目錄下面的jar文件參與編譯,但不將這些包的代碼打入APK、jar或AAR中。}// 使用jar任務(wù)生成jar文件,依賴assembleRelease的tasktask buildJar(type: Jar, dependsOn: ['assembleRelease']) { 
  104.     destinationDir = file('build/outputs/jar/') 
  105.     appendix = "" 
  106.     baseName = "" 
  107.     version = SDK_VERSION    // manifest信息 
  108.     def map = ['Version': SDK_VERSION,               'Gradle': project.gradle.gradleVersion,               'Vendor': 'szcomtop.com',               'Date': new Date().getDateTimeString() 
  109.         ] 
  110.     manifest.attributes(map)// from( 'build/intermediates/classes/release/') 
  111.     from(project.zipTree( 'build/intermediates/transforms/proguard/release/jars/3/3/main.jar')) 
  112.     exclude('**/BuildConfig.class') 
  113.     exclude('**/BuildConfig\$*.class') 
  114.     exclude('**/R.class') 
  115.     exclude('**/R\$*.class') 
  116.     include('**/*.class') 
  117. }// 使用Copy任務(wù)復(fù)制內(nèi)容task copySDK(type: Copy, dependsOn: ['buildJar']) { 
  118.     from('build/outputs/jar') 
  119.     into('../app/libs/') 
  120.     include("*.jar") 

 使用方法

本方會持續(xù)更新,隨著android的gradle工具的升級,可能有些配置會發(fā)生變化。比如 ndk.abiFilters 需要在高版本的gradle工具中才能使用,如何升級gradle版本,也可能會帶來編譯不通過等問題,需要耗費較長時間去解決,所以請慎重。

關(guān)于一些配置的用法,下面舉其中一個例子,其他雷同。

比如怎么知道有這個 compileOptions 配置?這個配置下面的又有哪些可以設(shè)置?這些設(shè)置怎么去使用?能給哪些值?

 
 
 
 
  1. compileOptions { 
  2.  
  3. sourceCompatibility JavaVersion.VERSION_1_7 // 設(shè)置代碼編譯的版本,一般是在使用JDK1.8時,配置這個,使編譯出來的jar包讓別人使用時更通用 
  4.  
  5. targetCompatibility JavaVersion.VERSION_1_7 
  6.  
  7. }  

從官網(wǎng)入手

android官方定義的gradle工具的使用說明文檔點 這里 ,gradle官方的說明文檔點 這里 。

點開鏈接中有個 DSL ,這個 DSL 是啥? DSL 就是 Gradle Build Language 的縮寫。哈哈,開個玩笑,是 Domain Specific Language 的縮寫, Domain 可以理解為 Project 。

跑題了,繼續(xù)。

compileOptions示例

打開android gradle工具的官方說明文檔頁面會看到如下圖所示的版本選擇頁面:

這個版本是與 android studio 項目根目錄下的 build.gradle 文件中的gradle版本是對應(yīng)起來的。同時發(fā)現(xiàn),這個版本會與 android studio 的版本對應(yīng)。如下圖所示:

點擊當前的2.2版本的鏈接,進入到如下界面,如下圖所示,在左側(cè)找到 compileOptions ,并點擊這個鏈接(熟悉這個官方文檔可以從左側(cè)的Home項開始):

再點擊上圖中紅色框框標記的鏈接,就會跳轉(zhuǎn)到如下圖所示位置的配置說明,這種跳轉(zhuǎn)的方式有點類似Java的API,只不過這個時候看到的應(yīng)該是詳細,結(jié)果卻沒有:

需要進一步查看詳細,只能是點擊上圖紅色框框標記的鏈接,進去之后就會發(fā)現(xiàn)熟悉的內(nèi)容了,如下圖所示:

有沒有一種久違的感覺,終于快看到真相了吧?還差一步。compileOptions中可用的選項及含義已經(jīng)在上面寫的很清楚了。再點擊 sourceCompatibility 會跳到如下圖所示內(nèi)容:

可以從上面看到 sourceCompatibility 可以取哪些值,終于找到結(jié)果了。

OK, compileOptions 示例就到這里,其它的配置使用也可以使用相同的方法,gradle官方使用文檔也是類似,剩下的只是熟悉的問題了。


當前名稱:Android gradle常用配置總結(jié)
當前地址:http://www.dlmjj.cn/article/djieiij.html