快速地導(dǎo)入別人的項目
當(dāng)我們在AS中導(dǎo)入別人的項目時(如github中的開源項目)李请,有時會發(fā)現(xiàn)特別地慢,這是因為如果項目中配置的gradle版本厉熟、compileVersion导盅、buildToolsVersion等在你的電腦里沒有時,AS就會去網(wǎng)上重新下載揍瑟。白翻。然后由于天朝偉大的防火墻,速度比較感人绢片。滤馍。所以我們可以修改gradle版本配置,以快速導(dǎo)入別人的項目杉畜。
** 需要修改的幾個地方如圖 **:
- 把app module的build.gradle文件中的buildToolsVersion換成你本地已經(jīng)下載好的版本纪蜒;不過minSdkVersion、compileSdkVersion此叠、targetSdkVersion等sdk版本不建議更改,因為修改這幾個配置會對項目有影響随珠。
- 替換掉gradle版本:
1). 在其它項目中(你電腦本地正常運行的項目)把wrapper文件夾中的兩個文件拷過來灭袁,替換掉要導(dǎo)入項目里的兩個文件;
2). 修改項目根目錄下build.gradle的dependencies { classpath '...'}窗看,照樣從別的項目中拷過來茸歧,版本號要與步驟一中的兩個文件對應(yīng)。
apk簽名配置
signingConfigs {
releaseSign {
keyAlias '***'
keyPassword '***'
storeFile file('your keystore file path')
storePassword '***'
}
}
或者你可以直接在AS中進行圖形化操作
-
app文件夾上右鍵 ——> Open Moudule Settings
-
在Signing選項卡下面填寫好簽名配置
-
在Build Types選項卡下 release版本的 Signing Config選為你剛才所新建的簽名配置显沈,點擊ok確定软瞎,大功告成
其實很多的gradle配置都可以在這個界面完成,自己慢慢摸索(__)
多渠道打包
在AndroidManifest.xml文件中添加metadata
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>
在build.gradle文件中添加
productFlavors {
xiaomi {}
wandoujia {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
- 在AS的命令行運行命令 gradlw build(如果打包時需要簽名要先配置好signingConfigs)拉讯,ok涤浇,打包完成后就可以在app/build/outputs/apk目錄下看到生成的apk文件。
構(gòu)建參數(shù)
1. 動態(tài)配置不同構(gòu)建版本中的appkey
在我們使用一些第三方sdk時(比如環(huán)信)魔慷,debug版本和release版本需要使用不同的appkey只锭,身患懶癌的我們總不能每次構(gòu)建的時候都改來改去吧,既麻煩又容易出錯院尔。好在借助manifestPlaceholders可以幫我們自動替換蜻展。
拿環(huán)信的appkey舉例:
1). 在AndroidManifest文件中添加
<meta-data android:name="EASEMOB_APPKEY" android:value="${EASEMOB_APPKEY_VALUE}"/>
2). 在build.gradle文件中添加
buildTypes {
release {
manifestPlaceholders = [EASEMOB_APPKEY_VALUE: "yourreleaseappkey"]
}
debug {
manifestPlaceholders = [EASEMOB_APPKEY_VALUE: "yourdebugappkey"]
}
}
2. 動態(tài)配置BuildConfig
一般我們開發(fā)應(yīng)用時都會有測試環(huán)境和生產(chǎn)環(huán)境喉誊,測試環(huán)境和生產(chǎn)環(huán)境使用的服務(wù)器地址是不一樣的,每次要打包時都要修改這個地址顯然麻煩纵顾,借助BuildConfig就可以實現(xiàn)動態(tài)配置了伍茄。
BuildConfig.java是AS自動生成的一個java類,使用方式類似于R類幻林,只能由AS管理,我們不能手動修改音念。我們在gradle文件中做些配置沪饺,就可以往BuildConfig.java添加靜態(tài)常量,然后就可以在項目中像引用其它類代碼一樣引用這個靜態(tài)常量闷愤。Gradle會在我們打包的時候根據(jù)構(gòu)建版本對這個靜態(tài)常量的值進行動態(tài)配置整葡。
在gradle文件中添加
buildTypes {
release {
buildConfigField('String', 'API_URL', "\"http://test.haha.com\"")
}
debug {
buildConfigField('String', 'API_URL', "\"http://www.haha.com\"")
}
}
然后點擊gradle同步按鈕進行同步,在BuildConfig.java文件中就會生成:
public static final String API_URL = "http://www.haha.com";
buildConfigField 一共有3個參數(shù)讥脐,第一個是要定義的常量值的數(shù)據(jù)類型遭居,這個類型和Java的類型是一樣的,第二個參數(shù)是常量名旬渠,第三個參數(shù)是常量值俱萍。