android – 是否可以将平台签名的应用程序安装到用户空间?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 是否可以将平台签名的应用程序安装到用户空间?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1685字,纯文字阅读大概需要3分钟。
内容图文
![android – 是否可以将平台签名的应用程序安装到用户空间?](/upload/InfoBanner/zyjiaocheng/785/d35588ae56f646a8bb60cd754bc5196e.jpg)
我最近在自定义Android版本中遇到了一个奇怪的问题?我已经有一个工作ROM几个月了,使用这个ROM我已经能够将平台签名的apks安装到用户空间(/ data / app).最近,在重建ROM之后,我一直无法安装那些相同的apks.任何安装平台签名应用程序的尝试(无论是通过adb install还是pm install)都会产生以下消息:
Failure [INSTALL_FAILED_INVALID_INSTALL_LOCATION]
在深入了解Android源代码后,我发现了以下相关代码块:
if ((compareSignatures(pkg.mSignatures, s1) == PackageManager.SIGNATURE_MATCH)) {
Slog.w(TAG, "Cannot install platform packages to user storage");
mLastScanError = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
return null;
}
根据我的阅读,似乎永远不允许在用户空间中安装系统应用程序.最初的情况是在用户空间中安装系统应用程序是异常吗?是否可以在用户空间中安装平台签名的应用程序,如果可以,如何做到这一点?
解决方法:
上面描述的情况是因为我们有一个共享的Android构建机器(在公司内共享).一位同事在没有通知我的情况下切换了一个Git分支,因此我们在构建空间中留下了旧代码.将其切换回正确的分支解决了这个问题.为了更明确地回答上述问题,除非您注释掉以下代码块,否则无法在用户空间中安装平台签名的应用程序.
(类文件是/frameworks/base/services/src/com/android/server/pm/PackageManagerService.java);
if (!pkg.applicationInfo.sourceDir.startsWith(Environment.getRootDirectory().getPath()) &&
!pkg.applicationInfo.sourceDir.startsWith("/vendor")) {
Object obj = mSettings.getUserIdLPr(1000);
Signature[] s1 = null;
if (obj instanceof SharedUserSetting) {
s1 = ((SharedUserSetting)obj).signatures.mSignatures;
}
if ((compareSignatures(pkg.mSignatures, s1) == PackageManager.SIGNATURE_MATCH)) {
Slog.w(TAG, "Cannot install platform packages to user storage");
mLastScanError = PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
return null;
}
}
内容总结
以上是互联网集市为您收集整理的android – 是否可以将平台签名的应用程序安装到用户空间?全部内容,希望文章能够帮你解决android – 是否可以将平台签名的应用程序安装到用户空间?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。