【Gradle】自定義Android Gradle工程

個人博客:
http://www.milovetingting.cn

自定義Android Gradle工程

defaultConfig默認配置

defaultConfig是Android對象中的一個配置項,負責定義所有的默認配置力穗。一個基本的defaultConfig配置如下:

android{
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig{
        applicationId "com.wangyz.app"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        //...
    }
}

applicationId

applicationId是ProductFlavor的一個屬性蹬敲,用于指定生成的App的包名发乔,默認情況下是Null.這個時候在構(gòu)建的時候,會從我們的AndroidManifest.xml文件讀取返干,也就是我們在AndroidManifest.xml文件中配置的manifest標簽的package屬性值升略。

minSdkVersion

minSdkVersion是ProductFlavor的一個方法,對應的方法原型為:

public void minSdkVersion(int minSdkVersion){
    setMinSdkVersion(minSdkVersion);
}

它可以指定我們的App最低支持的Android操作系統(tǒng)版本累提,其對應的值是Android Sdk的API LEVEL.它還有兩個方法原型:

public void setMinSdkVersion(@Nullable String minSdkVersion){
    setMinSdkVersion(getApiVersion(minSdkVersion))
}

public void minSdkVersion(@Nullable String minSdkVersion){
    setMinSdkVersion(minSdkVersion)
}

targetSdkVersion

這個用于配置我們基于哪個Android SDK開發(fā),它的可選值和minSdkVersion一樣磁浇。沒有配置的時候斋陪,也會從AndroidManifest.xml讀取。

versionCode

它也是ProductFlavor的一個屬性置吓,用于配置Android App的內(nèi)部版本號无虚,是一個整數(shù),通常用于版本的升級衍锚,沒有配置的時候友题,從AndroidManifest.xml讀取。方法原型是:

@NonNull
public ProductFlavor setVersionCode(Integer versionCode){
    mVersionCode = versionCode;
    return this;
}

@Override
@NonNull
public Integer getVersionCode(){
    return mVersionCode;
}

versionName

用于配置Android App的版本名稱戴质,如V1.0.0等度宦。

testApplicationId

用于配置測試App的包名踢匣,默認情況下是applicationId+".test"。

testInstrumentationRunner

用于配置單元測試時使用的Runner戈抄,默認使用的是android.test.InstrumentationTestRunner离唬。

signingConfig

配置默認的簽名信息,對生成的App簽名划鸽。

proguardFile

用于配置App ProGuard混淆所使用的Proguard配置文件输莺。

proguardFiles

這個也是配置ProGuard的配置文件,只不過它可以同時接受多個配置文件漾稀,因為它的參數(shù)是一個可變類型的參數(shù)模闲。

配置簽名信息

android{
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    signingConfigs{
        release{
            storeFile file("myrelease.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
    }
}

上面例子中建瘫,配置了一個名為release的簽名配置崭捍,除此之外,還可以配置多個不同的簽名信息啰脚。

android{
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    signingConfigs{
        release{
            storeFile file("myrelease.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
        debug{
            storeFile file("mydebug.keystore")
            storePassword "password"
            keyAlias "MyDebugKey"
            keyPassword "password"
        }
    }
}

現(xiàn)在已經(jīng)配置好了兩個簽名信息殷蛇,但還沒有被應用,應用方法如下:

android{
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    signingConfigs{
        release{
            storeFile file("myrelease.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
        debug{
            storeFile file("mydebug.keystore")
            storePassword "password"
            keyAlias "MyDebugKey"
            keyPassword "password"
        }
    }

    defaultConfig{
        applicationId "com.wangyz.app"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        signingConfig signingConfigs.debug
    }
}

除了上面的默認簽名配置外橄浓,也可以對構(gòu)建類型分別配置簽名信息粒梦。

android{
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    signingConfigs{
        release{
            storeFile file("myrelease.keystore")
            storePassword "password"
            keyAlias "MyReleaseKey"
            keyPassword "password"
        }
        debug{
            storeFile file("mydebug.keystore")
            storePassword "password"
            keyAlias "MyDebugKey"
            keyPassword "password"
        }
    }

    buildTypes{
        release{
            signingConfig signingConfigs.release
        }
        debug{
            signingConfig signingConfigs.debug
        }
    }
}

構(gòu)建的應用類型

如果想增加新的構(gòu)建類型,在buildTypes{}代碼塊中繼續(xù)添加元素就可以荸实。

applicationIdSuffix

applicationIdSuffix是BuildType的一個屬性匀们,用于配置基于默認的applicationId的后綴。

debuggable

debuggable用于配置一個可供調(diào)試的apk准给。其值可以true或false泄朴。

jniDebuggable

用于配置是否生成一個可供調(diào)試jni代碼的apk÷兜可接受boolean類型的值祖灰。

minifyEnabled

用于配置該BuildType是否啟用Proguard混淆,接受boolean類型的值畔规。

multiDexEnabled

用于配置該BuildType是否啟用自動拆分多個Dex的功能局扶。

proguardFile

用于配置Proguard混淆使用的配置文件。

proguardFiles

用于配置Proguard混淆使用的配置文件叁扫,可同時配置多個Proguard配置文件三妈。

shrinkResources

用于配置是否自動清理未使用的資源,默認為false莫绣。

signingConfig

配置該BuildType使用的簽名配置沈跨。

每一個BuildType都會生成一個SourceSet,默認位置為src//兔综。新增的BuildType名字不能是main和androidTest,因為這兩個已經(jīng)被系統(tǒng)占用鸠天,同時每個BuildType之間名稱不能相同。

使用混淆

代碼混淆是一個非常有用的功能秀菱,它不僅能優(yōu)化代碼质礼,讓apk包變得更小,還可以混淆原來的代碼费就,讓反編譯的人不容易看明白業(yè)務邏輯。

android{
    buildTypes{
        release{
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
        }
        debug{

        }
    }
}

啟用Zipalign優(yōu)化

zipalign是Android為我們提供的一個整理優(yōu)化apk文件的工具。它能提高系統(tǒng)和應用的運行效率硬鞍,更快地讀寫apk中的資源,降低內(nèi)存的使戴已。

android{
    buildTypes{
        release{
            zipAlignEnabled true
        }
        debug{
            
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末固该,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糖儡,更是在濱河造成了極大的恐慌伐坏,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握联,死亡現(xiàn)場離奇詭異桦沉,居然都是意外死亡,警方通過查閱死者的電腦和手機金闽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門纯露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人代芜,你說我怎么就攤上這事埠褪。” “怎么了挤庇?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵钞速,是天一觀的道長。 經(jīng)常有香客問我罚随,道長玉工,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任淘菩,我火速辦了婚禮遵班,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潮改。我一直安慰自己狭郑,他們只是感情好,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布汇在。 她就那樣靜靜地躺著翰萨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糕殉。 梳的紋絲不亂的頭發(fā)上亩鬼,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天殖告,我揣著相機與錄音,去河邊找鬼雳锋。 笑死黄绩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的玷过。 我是一名探鬼主播爽丹,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辛蚊!你這毒婦竟也來了粤蝎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤袋马,失蹤者是張志新(化名)和其女友劉穎初澎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞蛹,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谤狡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年灸眼,在試婚紗的時候發(fā)現(xiàn)自己被綠了卧檐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡焰宣,死狀恐怖霉囚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匕积,我是刑警寧澤盈罐,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站闪唆,受9級特大地震影響盅粪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悄蕾,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一票顾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帆调,春花似錦奠骄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芹务,卻和暖如春蝉绷,著一層夾襖步出監(jiān)牢的瞬間鸭廷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工熔吗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靴姿,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓磁滚,卻偏偏與公主長得像佛吓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子垂攘,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容