• AndroidStudio打包apk,安装出现签名冲突--解决办法


    Android UiAutomator2项目部署到jenkins上,实现自动打包,并自动push&安装到设备上

    遇到问题:

    可成功实现自动打包并push到设备上后,install -r 的时候报错:

    INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

    显示签名不一致,本打算手动先卸载原有的包,再重新安装,但同样无法卸载,卸载过程中报错:

    Failure [DELETE_FAILED_INTERNAL_ERROR]

    在网上找了很多解决这两个错误的方法,但都无法解决问题。因为项目代码里并没有任何地方配置了签名信息,怎么在本机上构建的apk和在jenkins上构建的apk会出现签名冲突呢?百思不得解。

    后在这篇文章http://blog.csdn.net/penglijiang/article/details/8626108看到这段话:

     Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。Android系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。         

       Android通过数字签名来 标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定用户可不可以安装该应用程序。android的这个签名由应用程序的作者完成,并不需要权 威的数字证书签名机构认证,他只是用来让应用程序包自我认证的。Android系统默认自动给应用程序签名,ADT会自动使用debug密钥为应用程序签名,debug密钥是一个名为debug.keystore的文件。

    才发现原来不配置签名信息 就是最大的问题 ~

    查询本机  $ sudo find / -name debug.keystore

    找到位置位于电脑的:~/.android/debug.keystore,AndroidStudio打包时默认用的是此处的keystore签名。

    可想而知:每个机器都使用自己本地的keystore,那么install到设备时必然会出现签名冲突的问题,解决办法就是配置一个共同使用的keystore。

    回到app下的build.gradle,在里面增加这段代码

    android {
        signingConfigs {
            debug {
                storeFile file('keystores/debug.keystore')
            }
            release {
                keyAlias 'androiddebugkey'
                keyPassword 'android'
                storeFile file('keystores/debug.keystore')
                storePassword 'android'
            }
        }

    在app下新建keystores目录,将debug.keystore文件放置在该目录下,这样共享代码库的其他人都能共享此签名key。问题解决。。。

    ps : debug.keystore文件具体怎么生成可在网上查询,资料很多。。

  • 相关阅读:
    437. Path Sum III
    416. Partition Equal Subset Sum
    417. Pacific Atlantic Water Flow
    30.构建单机多容器环境-故障&31.构建单机多容器环境
    29.镜像容器与仓库
    【笔记目录2】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
    【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总
    【笔记目录2】ASP.NET Core分布式项目实战
    【笔记目录1】ASP.NET Core分布式项目实战
    技术牛人感悟
  • 原文地址:https://www.cnblogs.com/biang/p/6694615.html
Copyright © 2020-2023  润新知