2014年11月4日 星期二

ApplicationId

新的 build 系統加了 applicationId 這東西

link

簡單的說, 他要解決不同版本 (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

沒有留言:

張貼留言