同一个应用安装两个apk在同一个手机的方法
对应安卓应用对比测试,有时候需要在同一个手机上安装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在同一个手机的方法相关推荐
- 同一个电脑安装两个jdk版本
同一个电脑安装两个jdk版本场景:公司项目使用的jdk为1.7,最近不是很忙,学习scala.该系统使用到了jdk1.8的特性,所以I need 俩版本,开整!!! 1 . 准备两个版本的jdk我的两 ...
- 一台电脑两种jdk_同一个电脑安装两个jdk版本
项目中分别使用到了JDK8和JDK11,需要在两个JDK之间切换,如果在一台电脑上安装多个JDK,需要切换的话修改下环境变量即可,这样工程开发起来就很方便了. 示例如下: 1 . 准备两个版本的jdk ...
- 同一台机安装两张网卡同时使用,双网卡使用方法
首先需要有两块网卡,分别接到两个路由上.下面是双网卡的网络IP地址配置示例: 外网地址设置 本地IP地址:192.168.1.1 子网掩码: 255.255.255.0, 网关: 192.168.1. ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- 两个网站做到同一个服务器,两个网站放在同一个服务器 备案
两个网站放在同一个服务器 备案 内容精选 换一换 没有,华为云包含企业邮箱服务,具体请参考: https://www.huaweicloud.com/marketplace/activity/mail ...
- thinkphp 视图模型 两个字段映射同一个表
thinkphp 视图模型 是挺好用的. 这里有一种情况,例如一个文章表,有一个字段是add_admin_id, 用于记录添加者的id,还有一个字段edit_admin_id, 用于记录最后编辑者的i ...
- linux 同一个ip 绑定两个不同的域名 访问两个不同的项目
用两个不同的域名绑定同一个ip访问两个不同的项目是完全可以做到的,远没有想象的那么复杂,使用服务器环境LNMP 要实现这个功能首先需要配置nginx 打开nginx的配置文档(nginx.conf) ...
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
实验4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 姓名:李冬辉 学号:20133201 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http ...
- 计算机联到同一个局域网,两台电脑连接同一个wifi算是局域网么
两台电脑连接同一个wifi算是局域网么 卡饭网 本站整理 2019-01-25 查询是否属于同个局域网办法有: 简单易懂法: 打开网络邻居,查看工作组计算机,如果在里面能看到对方的计算机名称.那么两台 ...
最新文章
- 边缘计算对于工业物联网的重要性
- python壁纸程序代码_python设置windows桌面壁纸的实现代码
- 基于 Rancher 的企业 CI/CD 环境搭建
- 激光点云格式转换 bin 相互 pcd转换
- hibernate中many-to-one实例一
- 在word上写博客直接发到CSDN博客
- Unity中的值传递与引用传递
- Apache负载均衡设置方法: mod_proxy
- BUUCTF--练习场--Include 1
- 陪孩子看完这几部高分纪录片,胜过出国亲子游!
- mysql 可以用多个索引_mysql索引合并:一条sql可以使用多个索引
- 企业会计准则2020版pdf_企业会计准则及应用指南(2017版)
- SpringBoot中使用异步方法优化Service逻辑,提高接口响应速度
- cuSPARSE库:(十二)cusparseDestroyMatDescr()
- 学以致用三十四-----python2.0加载图片
- 最简单的php导出excel文件方法
- 牛年大吉~ 包邮送一部新款华为手机!
- 拥抱Flutter,从0到1构建大前端应用
- 在日常生活中会使用到的管理系统
- 山型组合数c语言,(人教版)高中数学选修2-3课件:组合与组合数公式自主学习...