亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

淺析Android中build.gradle的實用技巧

2019-10-21 21:31:06
字體:
來源:轉載
供稿:網友

1.替換符的使用

(1)在 app-android-defaultConfig (或者多渠道打包)下面可以這樣使用

android {  defaultConfig {  manifestPlaceholders = [        //高德地圖key        GDKEY: "123456789",    ]   }}

(2)在 AndroidManifest.xml 文件的 application 標簽下面這樣引用

<!-- 高德地圖 -->    <meta-data      android:name="com.amap.api.v2.apikey"      android:value="${GDKEY}" />

2.打包設置appname(啟動圖標類似,res下面的都可以這樣使用)

android {  defaultConfig {    //在string.xml中不能出現app_name這個字段,否則生成報錯    resValue "string", "app_name", "app名稱"      }}

3.生成BuildConfig.java字段

在build.gradle中

android {  defaultConfig {      //生成一個boolea類型的變量      buildConfigField "boolean", "IS_TEST_URL", "true"      //生成一個字符串變量      buildConfigField "String", "APP_UPDATE_TIME", "/"${System.currentTimeMillis().toString()}/""   }}

在java代碼

public final class BuildConfig { // Fields from product flavor: 渠道名 public static final String APP_UPDATE_TIME = "1551754973086"; public static final boolean IS_TEST_URL = false;}

4.多渠道打包(注意在defaultConfig下面添加flavorDimensions "versionCode")

android {  compileSdkVersion 28  defaultConfig {    minSdkVersion 19    targetSdkVersion 28    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    flavorDimensions "versionCode"   productFlavors {    name1 {      applicationId "com.test.name"      versionName "0.1.4"      versionCode 5      resValue "string", "app_name", "app名字"         buildConfigField "boolean", "IS_TEST_URL", "false"      buildConfigField "String", "APP_UPDATE_TIME", "/"${System.currentTimeMillis().toString()}/""    }    }

5.設置簽名

android{ signingConfigs {    release {      keyAlias ''      keyPassword ''      storeFile file('./sign.jks')      storePassword ''      v2SigningEnabled false    }  }  buildTypes {    release {      debuggable false      minifyEnabled true      shrinkResources true      useProguard true      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'      signingConfig signingConfigs.release    }    debug {      debuggable true      minifyEnabled false      shrinkResources false      useProguard false      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'      signingConfig signingConfigs.release    }  }}

6.更改打包的apk名

android{ android.applicationVariants.all { variant ->    variant.outputs.all {      Date nowTime = new Date()      SimpleDateFormat time = new SimpleDateFormat("MM月dd日HH時mm分")      outputFileName = "${variant.flavorName}(${variant.versionCode}_${variant.versionName})(${time.format(nowTime)}).apk"    }  }}

7.引入第三方庫的時候,剔除某些不需要的包或者重復的包

1.直接在configuration中排除 

configurations {  compile.exclude module: 'commons'  all*.exclude group: 'org.gradle.test.excludes', module: 'reports'}

2.在具體的某個dependency中排除

dependencies {  implementation("com.github.bumptech.glide:glide:4.8.0") {    exclude module: 'appcompat-v7'  }}

PS:Android Studio開發Build.gradle小技巧

引用版本統一規范

Android開發存在著眾多版本的不同,比如compileSdkVersion、minSdkVersion、targetSdkVersion以及項目中依賴第三方庫的版本,不同的module及不同的開發人員都有不同的版本,所以需要一個統一版本規范的文件,現在我就來介紹一種方式。

在項目根目錄,也就是跟app同一目錄下的build.gradle文件,如下圖所示

Android,build.gradle

在其最后添加如下groovy代碼。

ext {  compileSdkVersion = 25  buildToolsVersion = "25.0.0"  minSdkVersion = 19  targetSdkVersion = 19   supportVersion = '25.3.1'  rxjavaVersion = '1.1.8'  rxandroidVersion = '1.2.1'  glideVersion = '3.6.1'  junitVersion = '4.12'   deps = [      appcompatv7  : "com.android.support:appcompat-v7:$supportVersion",      supportv4   : "com.android.support:support-v4:$supportVersion",      recyclerviewv7: "com.android.support:recyclerview-v7:$supportVersion",      rxjava    : "io.reactivex:rxjava:$rxjavaVersion",      rxandroid   : "io.reactivex:rxandroid:$rxandroidVersion",      glide     : "com.github.bumptech.glide:glide:$glideVersion",      junit     : "junit:junit:$junitVersion"  ]}

有了這個規范,那么我們在app下的build.gradle文件就可以這樣來引用了

android {  compileSdkVersion rootProject.compileSdkVersion  buildToolsVersion rootProject.buildToolsVersion  defaultConfig {    applicationId "com.ecarx.thememanager"    minSdkVersion rootProject.minSdkVersion    targetSdkVersion rootProject.targetSdkVersion    versionCode 1    versionName "1.0"  }  ...} dependencies {  compile fileTree(include: ['*.jar'], dir: 'libs')  compile deps.supportv4  compile deps.appcompatv7  compile deps.recyclerviewv7  compile deps.rxjava  compile deps.rxandroid  compile deps.glide   testCompile deps.junit}

是不是一勞永逸了,今后修改版本只需要修根目錄下的build.gradle文件即可把所有依賴版本都修改

對資源進行分包

我們可以對每個頁面的資源都進行具體分類,不只是layout,還有drawable及value,是不是心動了,趕緊照著如下配置試一試吧,別再讓資源文件們“混為一潭”了。

方法很簡單,配置我們的app文件夾下的build.gradle文件,比如我的

android {  ...  sourceSets {    main {      res.srcDirs =          [              'src/main/res',              'src/main/res/layouts',              'src/main/res/layouts/home',              'src/main/res/layouts/hot_sale',              'src/main/res/layouts/amuse',              'src/main/res/layouts/delicacy',              'src/main/res/layouts/food_management',              'src/main/res/layouts/settings',          ]    }  }}

新建相關文件夾,配置完之后,sync project一下就成功了

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久二区二区| 日韩精品在线观看一区| 久久99久久99精品中文字幕| 欧美日韩精品在线视频| 欧美性猛交xxx| 国产精品男女猛烈高潮激情| 国产精品第一第二| 日韩欧美国产黄色| www.日韩系列| 91精品久久久久久久久久入口| 大伊人狠狠躁夜夜躁av一区| 国产精品久久久久久久久久久久久| 亚洲自拍中文字幕| 亚洲精品免费av| 亚洲男人的天堂在线| 91最新国产视频| 欧美性受xxxx白人性爽| 国产精品丝袜视频| 91美女片黄在线观看游戏| 亚洲欧美激情另类校园| 精品无码久久久久久国产| 成人网在线免费看| 欧美一级免费视频| 国产激情视频一区| 日韩精品在线免费观看视频| 亚洲精品国产综合区久久久久久久| 欧美性猛交xxxx免费看| 欧美巨大黑人极品精男| 国产欧美日韩中文| 亚洲已满18点击进入在线看片| 日韩av快播网址| 亚洲欧美国产va在线影院| 成人午夜高潮视频| 日韩激情第一页| 亚洲自拍偷拍第一页| 亚洲护士老师的毛茸茸最新章节| 中文字幕亚洲第一| 久久激情五月丁香伊人| 91理论片午午论夜理片久久| 自拍偷拍免费精品| 亚洲第一精品夜夜躁人人爽| 九九久久综合网站| 日韩视频免费观看| 久久亚洲欧美日韩精品专区| 国产欧美日韩中文字幕在线| 国产精品久久一区主播| 最新中文字幕亚洲| 国内精品在线一区| 欧美富婆性猛交| 久久精品一偷一偷国产| 4p变态网欧美系列| 日本国产高清不卡| 55夜色66夜色国产精品视频| 国产精品青草久久久久福利99| 欧美日韩xxxxx| 日本精品视频在线观看| 久久躁狠狠躁夜夜爽| 久久精品一本久久99精品| 亚洲第一视频在线观看| 日韩电影免费观看在线观看| 国产精品免费久久久久影院| 精品无人区乱码1区2区3区在线| 国产91在线播放精品91| 久久久av电影| 日韩成人在线视频网站| 精品国产老师黑色丝袜高跟鞋| 国产精品精品久久久久久| 成人网在线免费看| 国产丝袜精品视频| 国产v综合v亚洲欧美久久| 日本免费在线精品| 色偷偷av一区二区三区乱| 97在线观看视频| 国产亚洲日本欧美韩国| 国产精品免费小视频| 中日韩美女免费视频网址在线观看| 欧美视频在线视频| 欧美成人精品一区| 日本精品视频在线观看| 日韩中文字幕国产| 日韩一区二区久久久| 国产精品直播网红| 国产成人精品一区| 国产精品免费观看在线| 欧美成人在线免费视频| 欧美中文字幕精品| 中文字幕欧美日韩| 欧美巨猛xxxx猛交黑人97人| 日韩av网址在线观看| 日本高清视频精品| 亚洲男人的天堂在线| 国产精品日日做人人爱| 亚洲最大av在线| 精品香蕉一区二区三区| 在线不卡国产精品| 欧美日韩亚洲视频| 精品中文字幕在线2019| 国产午夜精品久久久| 国产欧美精品日韩| 色综合天天狠天天透天天伊人| 成人网在线免费观看| 亚洲综合日韩在线| 国产精品亚洲自拍| 少妇高潮 亚洲精品| 亚洲欧美日韩成人| 午夜精品美女自拍福到在线| 国产精品白嫩美女在线观看| 久久成人精品一区二区三区| 国产视频999| 亚洲另类欧美自拍| 日韩欧美aⅴ综合网站发布| 亚洲欧美三级伦理| 日本aⅴ大伊香蕉精品视频| 国产精品麻豆va在线播放| 国产欧美一区二区三区视频| 精品国产乱码久久久久久虫虫漫画| 激情久久av一区av二区av三区| 精品久久久香蕉免费精品视频| 亚洲另类图片色| 美女久久久久久久| 狠狠爱在线视频一区| 日韩av电影手机在线| 国产精品亚洲欧美导航| 亚洲第一网站免费视频| 91丨九色丨国产在线| 色噜噜亚洲精品中文字幕| www.日韩不卡电影av| 国产成人精品在线视频| 亚洲一区二区三区成人在线视频精品| 欧美另类69精品久久久久9999| 亚洲日本欧美日韩高观看| 日韩av一卡二卡| 5278欧美一区二区三区| 久久综合亚洲社区| 欧美一区二三区| 91精品国产综合久久香蕉| 日韩亚洲成人av在线| 免费不卡在线观看av| 成人久久精品视频| 欧美成人中文字幕| 日本精品一区二区三区在线| 亚洲人在线视频| 国内揄拍国内精品少妇国语| 亚洲第一区在线| 国产精品自产拍高潮在线观看| 亚洲老板91色精品久久| 国模私拍视频一区| 国产美女精品免费电影| 亚洲2020天天堂在线观看| 日本久久久久亚洲中字幕| 久久久久中文字幕| 国产精品久久久久国产a级| 欧美日韩国产在线播放| 欧美黄色片在线观看| 日韩欧美亚洲国产一区| 亚洲精品久久久久久久久久久久| xxxx欧美18另类的高清| 亚洲欧美一区二区三区四区| 日韩高清有码在线| 国产日韩av在线播放| …久久精品99久久香蕉国产| 国产亚洲精品综合一区91| 日韩精品在线第一页| 国产最新精品视频|