对应安卓应用对比测试,有时候需要在同一个手机上安装release 和 debug 两个版本或者,有其他特殊定制需求版本,

此时两个apk的代码基本相同,但是由于包名相同,无法同时安装两个,此时可以通过如下配置:

buildTypes {debug {applicationIdSuffix "debug"}release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'}
}

即通过applicationIdSuffix 属性配置后,编译时会自动修改manifest.xml中的包名:

需要注意的是,如果你的代码中有使用Provider, 那么一定要记住修改其authorities,否则安装时会还是会报错误:

因为存在相同的provider name, 所以方便的做法时将authorities 也修改为带有 applicationId 部分,然后只用修改这个Id 就可以实现同一个apk 安装多个不同版本了。

在Manifest中使用${applicationId}

如Provider在声明android:authorities(该值必须唯一)时,如前缀为写死的包名字符串,当出现需要同一工程分包、分渠道打包时,安装在同一android设备将导致 INSTALL FAILED CONFLICTING PROVIDER 的报错(使用adb安装会有提示),这时可以使用${applicationId},这将避免android:authorities值非唯一的问题。

<provider
    android:name="xxxx.xxxx.xxx.xxxProvider"
    android:authorities="${applicationId}.xxxx"
    android:grantUriPermissions="true"
    android:exported="false"/>12345
${applicationId}也可以用在Manifest中其他需要唯一的取值情况,这种使用方式很灵活。

ContentProvider中authority要与声明的一致。
authorities匹配是根据UriMather.addUri(authority,path,code)。需要动态获取包名,不能写固定值(com.xx.xx.provider)。
// TODO: Android7.0 upgrade
String authorities = context.getPackageName() + FILE_PROVIDER_AUTHORTIES;
Uri contentUri = FileProvider.getUriForFile(context, authorities, newFile);

同一个应用安装两个apk在同一个手机的方法相关推荐

  1. 同一个电脑安装两个jdk版本

    同一个电脑安装两个jdk版本场景:公司项目使用的jdk为1.7,最近不是很忙,学习scala.该系统使用到了jdk1.8的特性,所以I need 俩版本,开整!!! 1 . 准备两个版本的jdk我的两 ...

  2. 一台电脑两种jdk_同一个电脑安装两个jdk版本

    项目中分别使用到了JDK8和JDK11,需要在两个JDK之间切换,如果在一台电脑上安装多个JDK,需要切换的话修改下环境变量即可,这样工程开发起来就很方便了. 示例如下: 1 . 准备两个版本的jdk ...

  3. 同一台机安装两张网卡同时使用,双网卡使用方法

    首先需要有两块网卡,分别接到两个路由上.下面是双网卡的网络IP地址配置示例: 外网地址设置 本地IP地址:192.168.1.1 子网掩码: 255.255.255.0, 网关: 192.168.1. ...

  4. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  5. 两个网站做到同一个服务器,两个网站放在同一个服务器 备案

    两个网站放在同一个服务器 备案 内容精选 换一换 没有,华为云包含企业邮箱服务,具体请参考: https://www.huaweicloud.com/marketplace/activity/mail ...

  6. thinkphp 视图模型 两个字段映射同一个表

    thinkphp 视图模型 是挺好用的. 这里有一种情况,例如一个文章表,有一个字段是add_admin_id, 用于记录添加者的id,还有一个字段edit_admin_id, 用于记录最后编辑者的i ...

  7. linux 同一个ip 绑定两个不同的域名 访问两个不同的项目

    用两个不同的域名绑定同一个ip访问两个不同的项目是完全可以做到的,远没有想象的那么复杂,使用服务器环境LNMP 要实现这个功能首先需要配置nginx 打开nginx的配置文档(nginx.conf) ...

  8. 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    实验4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 姓名:李冬辉 学号:20133201 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http ...

  9. 计算机联到同一个局域网,两台电脑连接同一个wifi算是局域网么

    两台电脑连接同一个wifi算是局域网么 卡饭网 本站整理 2019-01-25 查询是否属于同个局域网办法有: 简单易懂法: 打开网络邻居,查看工作组计算机,如果在里面能看到对方的计算机名称.那么两台 ...

最新文章

  1. 边缘计算对于工业物联网的重要性
  2. python壁纸程序代码_python设置windows桌面壁纸的实现代码
  3. 基于 Rancher 的企业 CI/CD 环境搭建
  4. 激光点云格式转换 bin 相互 pcd转换
  5. hibernate中many-to-one实例一
  6. 在word上写博客直接发到CSDN博客
  7. Unity中的值传递与引用传递
  8. Apache负载均衡设置方法: mod_proxy
  9. BUUCTF--练习场--Include 1
  10. 陪孩子看完这几部高分纪录片,胜过出国亲子游!
  11. mysql 可以用多个索引_mysql索引合并:一条sql可以使用多个索引
  12. 企业会计准则2020版pdf_企业会计准则及应用指南(2017版)
  13. SpringBoot中使用异步方法优化Service逻辑,提高接口响应速度
  14. cuSPARSE库:(十二)cusparseDestroyMatDescr()
  15. 学以致用三十四-----python2.0加载图片
  16. 最简单的php导出excel文件方法
  17. 牛年大吉~ 包邮送一部新款华为手机!
  18. 拥抱Flutter,从0到1构建大前端应用
  19. 在日常生活中会使用到的管理系统
  20. 山型组合数c语言,(人教版)高中数学选修2-3课件:组合与组合数公式自主学习...

热门文章

  1. python入门项目03:完成黑心资本家发工资的程序
  2. 微信朋友圈这些功能,保证有你不知道的!
  3. upstart 分析
  4. html 在线阅读器 flexpaper的使用
  5. HackRF-AIS信号的采集与解调
  6. xunsearch php实例,xunsearch系列(二)使用篇
  7. 日本类人机器人的最新相关信息
  8. IBM LinuxONE Community Cloud 免费试用申请教程
  9. Python:使用Pygal模拟掷骰子练习题
  10. VsCode使用教程1(更换背景)