Android 使用Gradle实现同时安装debug版本与release版本

我相信大家在开发中,肯定遇到过这种情形:

就是在开发工程中,使用的是debug环境,有时候会想看一下生产环境的数据,这时候还得删除当前的debug版本,再安装正式的包。

为了解决这个问题,为了方便内测,就要实现一个手机可以同时安装一个debug包,一个release包。

这个时候不得不感叹Android studio+Gradle强大,一下是实现步骤:

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'
        }
    }

这样在运行时你的包名就会加上.debug

2.在AndroidManifest.xml中,有的第三方SDK会要求写包名,比如个推,在申请权限是要求写入包名:

<uses-permission android:name="getui.permission.GetuiService.com.yaoyao.demo" />

为了可以动态的读取包名,改为一下写法:

<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来代替,实现动态获取包名。

这个时候问题来了,如果strings文件没有区分debug和release,那还是每次都得修改这个。因为我懒,又找到了对应的解决办法:

解决办法:

在src下面新建一个debug文件夹,下面建一个drawable-xxhdpi 和values,strings.xml定义如下:

屏幕快照 2016-09-09 18.14.40.png
<?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>

这样应该基本可以解决同时安装的问题了。
啊哈哈哈,好开心啊~~~

突然想到,在代码中也有可能使用到包名,还是为了解决动态读包名的问题,可以使用BuildConfig.APPLICATION_ID来代替包名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在项目中遇到需要实现 Apk 多渠道、定制化打包, Google 、百度查找了一些资料,成功实现了上述功能,在...
    看一季残花落幕阅读 2,556评论 1 8
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,197评论 8 72
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 最近在项目中遇到需要实现 Apk 多渠道、定制化打包, Go...
    牙锅子阅读 6,130评论 3 33
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,897评论 25 709
  • 秋天来了,树叶落了,天气渐渐变凉了。阿梅的水果店生意越来越好。阿梅每天都在想象着和老公赚了钱回老家的幸福生活。白天...
    一筐白菜阅读 359评论 0 0