解决Android应用安装快完毕时提示签名冲突

本文介绍了解决Android应用安装时出现的签名冲突问题的方法。包括生成keystore文件、使用ADT工具导出签名包、调整AndroidManifest.xml配置等步骤。

最近开发了一个Android手机应用,自己用Eclipse调试安装没问题,使用其他人调试生成的bin下的apk就会出现问题,安装到最后提示"安装签名冲突"错误,想了一下估计是没有给apk统一签名导致,以下说一下如何解决这个问题。

生成keystore文件

命令:keytool -genkey -v -keystore "c:\android\release\relase.keystore" -alias androidbook –storepass paxxword -keyalg RSA -validity 14000

给应用程序签名

给应用程序签名有很多种方式,本文在此不多做介绍,最方便的就是直接使用ADT工具导出签名包。右键工程菜单-->Android Tools --> Export Signed Application Package

解决方式如上提示:

将Run full error check when exporting app前面的勾去掉就可以了

如果还出现类似""your_string_name" is not translated in af, am, ar, be, bg, ca, cs, da, de, el, en-rGB, es, es-rUS, et, fa, fi, fr, hi, hr, hu, in, it, iw, ja, ko, lt, lv, ms, nb, nl, pl, pt, pt-rPT, ro, ru, sk, sl, sr, sv, sw, th, tl, tr, uk, vi, zh-rTW, zu    strings.xml    /projectname/res/values    line 44    Android Lint Problem"的错误,在将 "MissingTranslation" 从 "fatal" 改为 "warning"或"warning"以下的选项。

继续

解决上面的问题之后应该没问题了吧,继续导出签名包,可能出现下面对话框,意思是需要把debugable设置一下

然而,只有android:debuggable="true"时我们才可以在手机上调试Android程序。幸好使用Eclipse运行这种方式打包时其debug属性为true,使用Eclipse导出这种方式打包时其debug属性为法false, 因此在AndroidMainifest.xml中最好不设置android:debuggable属性置,而是由打包方式来决定其值。

现在把AndroidMainifest.xml 中的android:debuggable="true"删除,这回就没有错误了

选择keystore文件,输入密码

设置key alias,并输入密码。这个密码是前面用keytools生成时输入的

如果出现导出时报错:Conversion to Dalvik format failed with error1 ,右键项目 -> Properties -> Java Build Path -> Libraries -> 移除所有jars,然后右键项目 -> Fix Project Properties

### 系统签名成功但安装报错的原因分析 系统签名成功但在安装仍然报错的情况通常涉及以下几个方面: 1. **权限不足** 即使完成了系统的签名操作,如果目标设备上的安全策略限制了某些特定权限,则可能导致无法正常安装。这可能是由于设备启用了开发者模式下的严格校验机制所致[^1]。 2. **签名链不匹配** 当前使用的证书可能未被操作系统识别为合法的系统级证书。即使签名过程看似完成,但如果签名链不符合预期(例如缺少根CA认证或中间证书),则仍会出现安装失败的现象[^4]。 3. **文件损坏或路径错误** 在执行`codesign`命令或其他类似工具的过程中,若指定的目标可执行文件路径有误或者文件本身已受损,也可能引发此类问题。 4. **兼容性问题** 不同版本的操作系统对于系统级应用的要求可能存在差异。旧版OS或许支持某种形式的手动重签方式,而新版却不再允许这种做法,从而造成冲突。 --- ### 解决方案 以下是针对上述原因提出的几种可行方法: #### 方法一:重新检查并修正签名流程 确保所采用的是完整的、正确的系统私钥以及相应的公钥证书来进行整个签署工作流。可以尝试如下步骤来强制覆盖原有设置并再次进行深层递归式的全面签字处理: ```bash sudo codesign --force --deep --sign - /path/to/executable_or_app_bundle ``` 此脚本需替换其中的具体位置参数为你实际待处理的对象地址。 #### 方法二:调整SELinux状态 (仅限安卓平台) 如果是基于Android环境下面临到类似的状况,有可以通过临改变SELinux的工作模式至Permissive而非Enforcing来规避部分约束条件带来的阻碍效果。具体实现可通过adb shell进入后运行以下指令达成目的: ```bash setenforce 0 ``` 不过需要注意的是长期处于宽松状态下存在安全隐患因此建议只作为调试用途使用完毕后再恢复默认配置即设回数值1即可。 #### 方法三:更新相关依赖库/框架组件 鉴于引用材料提到关于Gradle构建环节里头常遇见的各种麻烦事包括但不限于插件版本不符等情况同样适用于此处场景下。所以不妨考虑升级项目中涉及到的所有第三方资源直至最新稳定发行版为止看看能否缓解症状表现出来的问题现象[^2]。 #### 方法四:查阅官方文档获取更精准指导说明 最后当常规手段均未能奏效之务必参照对应厂商发布的权威资料寻找确切解释与处置措施因为它们往往包含了最为详尽且可靠的解答信息可供参考借鉴学习之用处极大[^3]。 --- ### 总结 综上所述,面对系统签名虽已完成但仍遭遇安装障碍的情形应当从多角度出发逐一排查潜在诱因并通过采取恰当有效的应对策略加以克服最终达到顺利部署的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值