我相信大家在開發(fā)中踩衩,肯定遇到過這種情形:
就是在開發(fā)工程中柴罐,使用的是debug環(huán)境徽缚,有時(shí)候會(huì)想看一下生產(chǎn)環(huán)境的數(shù)據(jù),這時(shí)候還得刪除當(dāng)前的debug版本革屠,再安裝正式的包凿试。
為了解決這個(gè)問題排宰,為了方便內(nèi)測(cè),就要實(shí)現(xiàn)一個(gè)手機(jī)可以同時(shí)安裝一個(gè)debug包那婉,一個(gè)release包板甘。
這個(gè)時(shí)候不得不感嘆Android studio+Gradle
強(qiáng)大,一下是實(shí)現(xiàn)步驟:
1.在app的build.gradle 中添加 applicationIdSuffix '.debug'
详炬;具體如下:
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
applicationId 'com.yaoyao.demo'
minSdkVersion 14
targetSdkVersion 22
versionCode 0010100
versionName "0.1.1.0"
}
buildTypes {
debug {
applicationIdSuffix '.debug'
}
}
這樣在運(yùn)行時(shí)你的包名就會(huì)加上.debug
2.在AndroidManifest.xml中盐类,有的第三方SDK會(huì)要求寫包名,比如個(gè)推呛谜,在申請(qǐng)權(quán)限是要求寫入包名:
<uses-permission android:name="getui.permission.GetuiService.com.yaoyao.demo" />
為了可以動(dòng)態(tài)的讀取包名在跳,改為一下寫法:
<uses-permission android:name="getui.permission.GetuiService.${applicationId}" />
3.如果你使用了融云IM,在AndroidManifest.xml中需要寫:
<activity
android:name=".controller.im.ChatActivity"
android:exported="false"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="@string/rong_intent_host"
android:pathPrefix="/conversation/"
android:scheme="rong" />
</intent-filter>
</activity>
類似于這種需要在host里面寫包名的,可以用@string來代替,實(shí)現(xiàn)動(dòng)態(tài)獲取包名串绩。
這個(gè)時(shí)候問題來了,如果strings文件沒有區(qū)分debug和release割坠,那還是每次都得修改這個(gè)。因?yàn)槲覒性终业搅藢?duì)應(yīng)的解決辦法:
解決辦法:
在src下面新建一個(gè)debug文件夾,下面建一個(gè)drawable-xxhdpi 和values童谒,strings.xml定義如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Beta版</string>
<string name="rong_intent_host">com.yaoyao.demo.debug</string>
</resources>
這樣應(yīng)該基本可以解決同時(shí)安裝的問題了单旁。
啊哈哈哈,好開心啊~~~