我们知道在 build.gradle 里面可以使用 buildTypes 针对自己 app 做一些 custom setup,例如同时在同一设备上安装 debug 和 release 版本
简单方便的方法:

buildTypes {
        debug {
            applicationIdSuffix ".debug"
            signingConfig signingConfigs.myConfig
            versionNameSuffix='d'
        }
        ...
    }

这里有个坑,如果你的应用有自定义的 view 或者属性时,需要在资源文件里将命名空间修改如下:

xmlns:app="http://schemas.android.com/apk/com.package.name"

to

xmlns:app="http://schemas.android.com/apk/res-auto"

就为了上面这一句我那坑爹的程序猿哥们坑了我半个工作日!! 我还尝试了去改 java 包名..一把泪

另外如果你的应用如果有用到 Contentprovider,需要 AndroidManifest 里面对 authorities 少许修改下:

<provider
            android:name=".provider.AppContentProvider"
            android:authorities="${applicationId}.provider"
            android:multiprocess="false" />

继续 Code 里面补上一句,BuildConfig 会在你编译的时候读取你 build.gradle 里面设置的 applicationID

public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".provider";

Ok,That's it ! 希望能节省你们宝贵的工作时间!


↙↙↙阅读原文可查看相关链接,并与作者交流