返回顶部
首页 > 资讯 > 移动开发 >Android实现同时安装测试环境与生产环境包,及区分app名和图标
  • 408
分享到

Android实现同时安装测试环境与生产环境包,及区分app名和图标

环境生产环境安装测试环境app测试Android 2022-06-06 13:06:15 408人浏览 泡泡鱼
摘要

众所周知,相同包名的APP,是不能同时安装的,但是我们实际开发中,测试同学往往在测试环境没问题,上了生产环境,却发现了bug,这时候就只能卸载生

众所周知,相同包名的APP,是不能同时安装的,但是我们实际开发中,测试同学往往在测试环境没问题,上了生产环境,却发现了bug,这时候就只能卸载生产环境的包,再去安装测试环境。如果开发流程中缺少自动化打包或者测试同学不保存蒲公英二维码,这时候就会产生多余时间成本。那么有没有一种可能,同时安装测试与生产环境的包呢?

这个当然是可以的,我们更换包名就行了,Android Studio早已为我们准备了相应的操作:

很简单,就一句:

给你的app, buildTypes -debug下面增添

applicationIdSuffix ".debug"

相当于在打包时,会为debug的包原包名后增加 .debug.

详细如下:

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            debuggable true
            zipAlignEnabled true  //是否支持zip
            resValue("string", "ENVIRONMENT", "RELEASE")
            buildConfigField "boolean", "LOG_DEBUG", "false"
            resValue "string", "name", "release"
            resValue "int", "loGo", "release"
            signinGConfig signingConfigs.release
        }
        debug {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            minifyEnabled false
            zipAlignEnabled true
            debuggable true
            applicationIdSuffix ".debug"
            resValue("string", "ENVIRONMENT", "DEBUG")
            resValue "string", "name", "debug"
        }
    }

以上操作适用于大部分同学,但如果你的APP中含有 ContentProvider或者FileProvider(Android7.0文件适配必备),也就是和包名相关的;或者你想更直接点,直接区分测试与生产的app名及图标,那么你可能需要如下操作了:

APP含有ContentProvider 实际场景:华为推送
 

当我们的项目中包含华为push时,往往会有如上代码,此时如果不处理包名,就会出现同时只能安装一个APP,否则adb就会提示 com.huawei.hms.update.provider.UpdateProvider 已存在(使用adb命令,adb install …apk 这样会详细提示)。

处理方式:
        

APP含有FileProvider 实际场景:Android7.0文件适配

适配也很简单,将 authorities="" 里的包名改为 ${applicationId} 即可


动态替换app名,图标

都到这一步了,那不如更友好点,让测试同学更好辨认:

修改app.build文件

 buildTypes {
        release {
           	...
            manifestPlaceholders = [icon: "@mipmap/logo",
            						//这里也可以加入FileProvider的不同包名
            						//例如: fileProvider: "com.petterp.release.provider"
            						//根据自己的需求来定
                                    name: "生产环境"]
						...
        }
        debug {
   					...
            manifestPlaceholders = [icon: "@mipmap/logo_debug",
            						//这里也可以加入FileProvider的不同包名
            						//例如: fileProvider: "com.petterp.debug.provider"
            						//根据自己的需求来定
                                    name: "测试环境_debug"]
            ...
        }
    }

这里不同的配置,区分线上和测试。当然照葫芦画瓢,我们还可以定义更多测试与生产的不同数据,这个根据自己的需求即可。


然后修改AndroidManifest如下
image-20200309000103284
效果如下:
image-20200309000332542

好了,实现了,还是挺简单,是不是很直观了。


叮叮当

需要注意的地方

如果你的APP内含有分享或者推送,那么测试版如果与线上用的是同一个appid与servert,那么测试版可能都会失败,当然这也很正常(如果不是同一个,自己处理下即可,怎么处理呢,楼下截图)。所以这点需要注意,逻辑上的功能都没什么问题。

如果不是同一个id,处理方式如下

同样是buildType下更改debug和release,分别对应的不同id,

  ...
  buildConfigField "String", "BaseUrl", "\"https://www.google.com/\""
	buildConfigField "String", "WEBUrl", "\"Https://www.google.com/""
   buildConfigField "String", "wxAppid", "aasdadasdadadasda"

使用时如下:

class Test {
    fun test() {
        BuildConfig.webUrl
        BuildConfig.BaseUrl
    }
}

这样在打包时相应的id就会自动对应。省的自己判断了。

当然这都是很基础的一些东西,如果有帮到你的地方,不胜荣幸哈。


作者:petterp


--结束END--

本文标题: Android实现同时安装测试环境与生产环境包,及区分app名和图标

本文链接: https://lsjlt.com/news/29081.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作