有這樣一個場景:一個項目正在開發(fā),后來領(lǐng)導(dǎo)說有另外一個項目跟當(dāng)前項目很像,,只要在上面改些東西就可以了,,然后你一聽立刻把代碼復(fù)制一份在上面改,改完以后領(lǐng)導(dǎo)又說要加一些功能,,兩個項目都要加,,累死累活做完以后領(lǐng)導(dǎo)又說,后面可能還會有第三個項目,,只需要在上面改點(diǎn)東西就可以了,, 并且后面加功能這三個項目都要,是不是很崩潰,?這該怎么辦,?有沒有一種簡單的方法只需要配置一下就可以了,? 答案是有的,請看: 一,、gradle配置要求ownCompile project(path: '':carddesk_module'', configuration: ''ownRelease'') 當(dāng)我們使用compile來引用包,,或者如上使用它的變種來引用包的時候,gradle會有一些版本限制,,否則就會報錯: (1)首先找到gradle/wrapper/gradle-wrapper.properties,,雙擊打開,替換gradle版本為: distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip (2)打開根目錄下的build.gradle文件,,把沒有翻墻的話把google()注釋掉,,否則會報錯,把classpath的3.2.0版本換成2.3.3版本 如下: buildscript { (3)gradle高版本創(chuàng)建的工程不需要顯示的指定buildToolsVersion "25.0.3",,現(xiàn)在我們把它降低了,, 所以要手動把它加上,否則會報沒有指定buildToolsVersion的錯誤,。 二,、配置工程簽名文件 1、創(chuàng)建簽名文件,,然后把簽名文件放到工程中的app目錄下: 2,、然后在android {}下面添加如下代碼,注意順序,,腳本代碼從上至下執(zhí)行,,如果signingConfigs和buildTypes寫反了則buildTypes里面debug中的sigingConfigs.release中的release就找不到了,添加好以后同步gradle signingConfigs { 如下圖在工程中Signing里面就可以看見配置信息了 3,、上面實現(xiàn)以后,,我們就可以來回切換debug和release了 如果工程中有分享微信的功能,那這時候運(yùn)行安裝的就是簽名過得,,不必刻意去簽名來測試分享微信功能,。 但是注意一個問題,debug和release來回切的時候有可能release會報錯,,這樣設(shè)置一下就好了: 三,、multiDexEnable true 和 平臺支持 1、隨著公司業(yè)務(wù)不斷的變多,, 工程中的代碼會越來越多,,到一定程度的時候運(yùn)行代碼直接崩潰, 查原因發(fā)現(xiàn)是某個類找不到,。在android5.0之前,每一個android應(yīng)用中只會含有一個dex文件,,但是因為Android系統(tǒng)本身的BUG,,使得這個dex的方法數(shù)量被限制在65535之內(nèi),,這就是著名的”64K(641024)事件。 如何解決呢,? 請看下圖,,只需要加一行代碼就可以了突破64k限制了, 由于篇幅原因,,這里只給解決方案 2,、經(jīng)常會碰到這樣一種情況,我們每次引用的第三方庫里面的so包含很多個平臺,,armeabi,、x86、mips,、armeabi-v7a等,,這樣打包后發(fā)現(xiàn)體積特別大,有沒有一種辦法能讓包小一點(diǎn)呢,? 請看上圖,, 有一種方式可以設(shè)置我們支持的平臺,其他的會直接被忽略,, 這樣就減小了包的體積,,大多數(shù)手機(jī)現(xiàn)在是arm架構(gòu),模擬器是x86架構(gòu),,所以只需要支持這兩個就可以了,。 四、一些設(shè)置 1,、lintOptions lintOptions { 將上面兩個選項設(shè)置為false,, 這兩個選項作用是在打包的時候不會因為一些莫名其妙的問題中斷gradle,,導(dǎo)致包打不出來。 如果想查看更多的lintOptions配置,,請看:https://blog.csdn.net/berber78/article/details/607660912,、dex方法超過64k限制和gradle編譯oom問題解決: dexOptions { 3、引用aar文件android {
repositories {
flatDir { // 指定aar路徑
dirs ''libs''
}
}
}
dependencies {
compile(name: ''lyx-library-1.0.3'', ext: ''aar'')
}
|
|