新的 build 系統加了 applicationId 這東西
簡單的說, 他要解決不同版本 (free/pro) 如何產出 apk 的問題
例如說兩個版本
- com.example.my.app.free
- com.example.my.app.pro
在舊的 build tool 上, 要把 AndroidManifest.xml 分別用不用的 packageName 分開
… 想到就很痛苦
新的 build 系統讓 source code 幾乎都不改的情形下
只修改 .gradle 檔
app/build.gradle:
productFlavors {
pro {
applicationId = "com.example.my.pkg.pro"
}
free {
applicationId = "com.example.my.pkg.free"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
....
注意的點在於,雖然不用改 manifest 裡的 pkg name
可是實際上 package name 已經改了
$ aapt d badging app-release.apk
package: name='com.example.my.pkg.free' versionCode='1' versionName='1.0' platformBuildVersionName=''
sdkVersion:'15'
targetSdkVersion:'20'
如果是直接指定 component 的情形下,要小心
adb shell am start -n com.example.my.pkg/.MainActivity 已經無法使用
要改成
adb shell am start -n com.example.my.pkg.free/com.example.my.pkg.MainActivity
沒有留言:
張貼留言