Android 在同一台手机上同时安装测试包和正式包

版权声明:本文为博主原创文章,转载请注明出处,谢谢! https://blog.csdn.net/myth13141314/article/details/73616580

日常开发的时候往往需要调试,调试一般是测试包,而上线前的最后调试一般是正式包。怎么样才能在同一个手机中安装测试包和正式包呢?关键就在包名ApplicationID上面

通过Gradle可以配置不同的版本用不同的ApplicationID,主要就是applicationIdSuffix属性的应用

defaultConfig {
    applicationId "com.myapp.test"
    minSdkVersion 15
    targetSdkVersion 25
    versionCode  100
    versionName "1.0.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {
    debug {
        resValue 'string', 'app_name', '测试版'
        applicationIdSuffix ".debug"
    }

    dev {
        resValue 'string', 'app_name', '开发版'
        applicationIdSuffix ".dev"
    }

    release {
        resValue 'string', 'app_name', '线上版'
        signingConfig signingConfigs.config

    }
}

Ok!通过以上的简单配置我们就能安装测试版和开发版以及正式版到同一个手机上了,分别对应的包名是

  • 测试版:com.myapp.test.debug
  • 开发版:com.myapp.test.dev
  • 正式版:com.myapp.test

碰到的问题

  • INSTALL FAILED CONFLICTING PROVIDER
    这个问题的原因是你的项目中使用了Provider

解决方法

  • AndroidManifest文件中修改Provider的authorities属性为动态的${applicationId}.fileProvider
<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:replace="android:authorities">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths"/>
</provider>
  • 修改调用Provider的地方
Uri uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID + ".fileProvider", file);

OK!通过以上方法就可以在同一个手机上测试开发版和正式版啦!



欢迎关注我的公众号,和我一起每天进步一点点!
这里写图片描述

展开阅读全文

没有更多推荐了,返回首页