问题:

安装应用提示 该文件包与具有同一名称的现有文件包存在冲突。 无法安装

可能的原因:新版的软件的versionCode和现有版本的软件相同

解决方案:

修改新版本软件的versionCode。为了不用每次发布都手工修改,通过代码可以设置为自动增加+1

方法如下:

第一步:
创建一个文件,名字就叫version.properties(当然,这个不一定要这么写),位置和build.gradle文件同级,app这个是我的执行module,

文件里面的内容是:

VERSION_CODE=10104

第二步:
在build.gradle文件里面加入以下代码(注意:代码的位置和android{...}平级),此方法是获取自增之后的版本号

def getVersionCode() {// 获取版本号
    def versionFile = file('version.properties')// 读取第一步新建的文件
    if (versionFile.canRead()) {// 判断文件读取异常
        Properties versionProps = new Properties()
        versionProps.load(new FileInputStream(versionFile))
        def versionCode = versionProps['VERSION_CODE'].toInteger()// 读取文件里面的版本号

    def runTasks = gradle.startParameter.taskNamesString runTasksStr=""for(String s:runTasks){runTasksStr+=s+","}//runTasks=,\:app\:assembleReleaseif (runTasksStr.indexOf("assembleRelease")>=0) {//仅在assembleRelease任务是增加版本号,其他渠道包在此分别配置// 版本号自增之后再写入文件(此处是关键,版本号自增+1)versionProps['VERSION_CODE'] = (++versionCode).toString()//versionProps['runTasks'] = strsversionProps.store(versionFile.newWriter(), null)}return versionCode.toInteger()// 返回自增之后的版本号

} else {
        throw new GradleException("Could not find version.properties!")
    }
}
 
android{
    ...
}
需要特别注意的是,正常情况,我们只有在打包的时候才需要自增versionCode,平时调试是不需要改变这个值的,所以我们需要加入下面这个判断

如果有多渠道打包时,可以这样写,task1和task2要根据具体情况而定。

if ('assembleRelease' in runTasks || 'task1' in runTasks || 'task2' in runTasks ) {//仅在assembleRelease任务是增加版本号,其他渠道包在此分别配置
            // 版本号自增之后再写入文件(此处是关键,版本号自增+1)
            versionProps['VERSION_CODE'] = (++versionCode).toString()
            versionProps.store(versionFile.newWriter(), null)
        }
值得一提的是,我在做这一步的时候,碰到了一个坑,我没有设置多渠道打包,按理说task的值是assembleRelease(一般情况是这样的),但是实际上我这里需要用:app:assembleRelease,至于什么原因,此处就不说了,教大家一个很简单的方法来确定这个值:

就是你打包一个release的apk,打包的过程中你可以看到这段代码,其中2中红色框框里面的中括号内容便是你所需要的

第三步:
build.gradle文件,在你设置版本号的加入一下代码

我这里是直接在默认位置设置的版本号,要注意这段代码的位置哟!!!

versionName和versionCode处理方式类似,最后再去简单说明一下

def currentVersionCode = getVersionCode()
现在,你再去打包,你会发现,version.properties里面的10104变成了10105,如果没有改变,有两个可能:

1、第二步里面的 assembleRelease 错了,请按照第二步中红色文字调试

2、第三步中,getVersionCode()方法的位置错了(我当时不小心放到defaultConfig{...}中去了)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

最后,简单提一下getVersionName()这个方法

def getVersionName() {
    def date = new Date();
    def versionName = date.format('yyyyMMddHHmmss');
    return versionName
}

android 该文件包与具有同一名称的现有文件包存在冲突相关推荐

  1. [Android] 该文件包与具有同一名称的现有文件包存在冲突

    1.[Android] 该文件包与具有同一名称的现有文件包存在冲突 出现这种情况有2方面原因 一方面是你代码里确实有问题,可能出现了 INSTALL FAILED CONFLICTING PROVID ...

  2. android 应用更新安装时出现《 文件包与具有同一名称的现有文件包冲突》小记录

    前言:实现应用自动下载更新时,在安装时出现"文件包与具有同一名称的现有文件包冲突"的错误. 因为适配7.0以上获取内置路径的适配,添加了配置一些配置: <provideran ...

  3. Android安装App出现:“该文件包与具有同一名称的现有文件包存在冲突”的解决方法

    由于做项目,拿魅族手机开发调试App,之前一直用AS直接Build之后安装App,没什么问题.最近用AS发布App,使用魅族手机安装时,提示"该文件包与具有同一名称的现有文件包存在冲突&qu ...

  4. 该文件包与具有同一名称的现有文件包存在冲突

    1.情况:之前apk使用乐固,更新版本使用360加固(360兼容Android 版本9),更新的时候出现:"该文件包与具有同一名称的现有文件包存在冲突" 2.问题:签名使用错了 3 ...

  5. 应用未安装 该文件包与具有同一名称的现有文件包存在冲突

    究其原因我也不知道 反正就是apk包出了问题 网上答案多数是说设置provider用${applicationId}方式 <providerandroid:name="androidx ...

  6. uniapp一套代码打包两个APP 安装失败,提示:与已安装应用签名不同,该文件包与具有同一名称的现有文件包存在冲突

    同一套代码要打包两个不同app,更换了名称和图标,为做区分还更换了打包签名文件. 安装第二个apk的时候发生冲突,提示如下图:与已安装应用签名不同. 解决办法如下: 在manifest.json 文件 ...

  7. 安装应用提示 该文件包与具有同一名称的现有文件包存在冲突。 无法安装

    解决方案 : 方式一.在cmd 使用 adb uninstall 包名(这个是大多数原因) 方式二.修改 versionCode

  8. android 复制文件到指定文件夹_按指定名称批量新建文件夹,其实并不难

    假如你有一个很长的excel名单,成百上千人.业务需要,这些姓名都需要单独做成一个个文件夹. 难道要新建文件夹,然后复制多个,然后用复制粘贴大法一个个去修改文件夹名字吗??? 记住一句话,EXCEL中 ...

  9. python怎么导入数据包_python – Scapy:如何在现有数据包中插入新层(802.1q)?

    为了找到答案,我看了一下 Scapy: Inserting a new layer and logging issues,这真的很有用,但包含了一些内容. 我根据引用的问题(add-dot1q_pca ...

最新文章

  1. JavaScript停止冒泡和阻止浏览器默认行为
  2. AutoCAD2004启动时出现fail to get CommcntrController的怎么办
  3. mysql 出现 quot_mysql 出现 quot;the table is fullquot;的问题 - tmuffamd - ITeye博客
  4. Do 32-bit build only with XCode 5.1
  5. iOS 10 推送的简单使用
  6. 负负为何得正的推理过程
  7. 【清华大学陈渝】第四章_物理内存管理
  8. android 日历 插件,Android实现日历控件示例代码
  9. excel熵值法计算权重_一文讲清楚分散投资(下)——让很多人顿悟的“熵增定律”在投资中的应用...
  10. Redis之惰性删除
  11. matlab期末题库,Matlab-期末考试题库(共12套卷)
  12. Linux丢包问题排查思路
  13. 教你如何鉴别原装和组装线孔耳机
  14. 【Gulimall】Spring Cloud:spring-cloud-gateway、spring-cloud-openfeign,Alibaba的注册+配置中心Nacos
  15. 文章翻译—基于误差状态卡尔曼滤波器的四元数运动学—前言
  16. C/C++语言问题——某年某月的天数是多少?
  17. python小技巧5 调整图片像素输出更清晰
  18. java static方法过多_Java 项目静态方法过多会有什么样影响?静态类、静态方法影不影响多线程性能...
  19. 苹果4s怎么显示无服务器,苹果4s连接电脑没有反应怎么办 苹果4s怎么连接电脑...
  20. NSA提供有关如何降低位置跟踪风险的建议

热门文章

  1. 河北最新食品安全管理员模拟真题集及答案解析
  2. java 翻译 go语言_【翻译】go是面向对象语言吗?
  3. LeetCode - 807. 保持城市天际线 - Java
  4. 华芯通服务器芯片将于今年年底前上市
  5. Excel数据分析(七)第六章数据透视表
  6. 游戏代理加盟需要什么条件?
  7. 单目图像3D物体的姿态检测
  8. element table 左对齐
  9. 虚拟化存储和非虚拟化存储
  10. git 同时连接云效平台和github