久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android一套代碼打不同的包工程配置詳解_上-gradle基本知識介紹

 杰出天下 2018-10-10
有這樣一個場景:一個項目正在開發(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'')
voresCompile project(path: '':carddesk_module'', configuration: ''voresRelease'')
      當(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 {

repositories {
// google()
jcenter()
}
dependencies {
// classpath ''com.android.tools.build:gradle:3.2.0''
classpath ''com.android.tools.build:gradle:2.3.3''

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
// google()
jcenter()
}
}
(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 {
release {
keyAlias ''dongjie'' // key別名
keyPassword ''dongjie'' // 別名密碼
storeFile file(''proj_aos_key.jks'') // 簽名文件路徑
storePassword ''dongjie'' // 簽名文件密碼
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
debuggable true
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
如下圖在工程中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 {
checkReleaseBuilds false // true 如果有崩潰停止構(gòu)建,, false不停止
abortOnError false // true錯誤發(fā)生停止gradle構(gòu)建, false錯誤發(fā)生不停止gradle構(gòu)建
}
將上面兩個選項設(shè)置為false,, 這兩個選項作用是在打包的時候不會因為一些莫名其妙的問題中斷gradle,,導(dǎo)致包打不出來。
如果想查看更多的lintOptions配置,,請看:https://blog.csdn.net/berber78/article/details/60766091
2,、dex方法超過64k限制和gradle編譯oom問題解決:
dexOptions {
javaMaxHeapSize "4g"
jumboMode = true
}

3、引用aar文件

android {
    repositories {
        flatDir {    // 指定aar路徑
            dirs ''libs''
        }
    }
}

dependencies {
    compile(name: ''lyx-library-1.0.3'', ext: ''aar'')
}

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多