Kra*_*aba 6 permissions android
我已经在互联网上搜索了我的问题的答案,但不幸的是我没有找到解决我的问题的方法.我甚至在官方论坛上写过这个案例,不幸的是,主持人无法应对这个问题.下面我描述问题,希望有人有类似的问题,并知道解决方案.
我创建了一个在Android 4.1上运行良好的应用程序,这就是为什么我拒绝与缺少"某些东西"相关的问题.现在,似乎在较新版本的android中是一个bug,因为在更新到Android 4.3+(API 18+)后,我的应用程序会显示以下消息:
/ cache/recovery/command:open failed:EACCESS(权限被拒绝)
我的应用程序是一个系统应用程序,因此该文件
与适当的文件访问权限(chmod)一起*.apk放在目录中/system/app/,因此它context.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM等于1.
因为应用程序使用RecoverySystem.installPackage(...)我添加权限的方法:
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" /> <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.DELETE_CACHE_FILES" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
超过所需的最小值,因为其中我的应用程序使用方法RecoverySystem.verifyPackage(...)
此外,此方法在更新到Android 4.3+后出现问题,但这些问题在添加(或所有)权限之后已得到解决:
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
注意: 对于测试,我还在清单文件中添加了所有可用的权限,但这并没有解决问题.
再一次,我想强调应用程序正常工作,直到更新到android 4.3+.更新后,消息出错:
/ cache/recovery/command:open failed:EACCESS(权限被拒绝)
调用方法时会发生此错误RecoverySystem.installPackage(...).(FileWriter command = new FileWriter(COMMAND_FILE);其中COMMAND_FILE== /cache/recovery/command)
我不确定,但我认为其中一个可能的原因可能是'bootable/recovery/recovery.c'中的错误,但我找不到任何确认.
如果有人可以提供帮助,我将不胜感激.
PS为了避免互联网上的混乱,不要发布像"使用谷歌"这样的文字,"已经是 - 我已经在某个地方看到了 - 但不记得在哪里","我有同样的问题/也不适合我",以及其他无法解决问题的帖子.
@ shiri-hrw感谢您的回复.
将android:sharedUserId ="com.google.uid.shared"添加到我的应用清单(AndroidManifest.xml)后,发生错误:
安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE请检查logcat输出以获取更多详细信息.发布取消了!
logcat的
包com.example.test没有与共享用户com.google.uid.shared中的签名相匹配的签名; 无视!
和/或
包com.example.test没有与共享用户android.uid.system中的签名匹配的签名; 无视!
你写了:
...因为您的应用未使用Google签名进行签名...
但是在签名申请之后,使用文件*.pk8和*.x509.pem,可以在pulbic sdk中的build/target/product/security下找到.
java -jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk
和/或
java -jar SignApk.jar shared.x509.pem shared.pk8 Application.apk Application_signed.apk
错误仍然发生.
当我将我的应用程序推送到系统/应用程序(并重新启动)时,应用程序在应用程序中不可见.
我遇到了同样的问题,但解决了。如果您的固件是 4.3+ 那么,您应该添加android:sharedUserId="com.google.uid.shared"到您的应用程序清单中,并将您的应用程序推送到system/app。
为此,您可以root您的设备,但添加此后,您将不会被安装,因为在安装过程中,PackageManagerService中的verifySignaturesLP方法将返回false,因为您的应用程序未使用谷歌签名进行签名,因此您必须在该方法中进行更改以检查你的应用程序打包并在那里返回 true 。
您收到该错误是因为您的应用程序没有与 Google 的签名匹配的签名。尽管您已使用 *.pk 签署了您的应用程序,但该/那些文件不包含 Google 用于签署其应用程序的签名。
因此,要安装您的应用程序,您需要像我之前提到的那样修改框架代码。例如,您可以修改您的verifySignaturesLP方法以针对您的应用程序返回 true。
或者第二种选择
如果您无法这样做,那么我不确定,但您可以尝试其他方法。不要使用该共享 ID,而是使用设备中其他系统应用程序的共享 ID。例如我使用android:sharedUserId="android.uid.system"
然后通过给出以下命令让您的设备宽容
1. adb shell
2. setenforce 0
Run Code Online (Sandbox Code Playgroud)
请记住,在执行上述命令后,您应该获得Permissive而不是Enforcinggetenforce。然后尝试。我对第二个选项不是 100% 确定。希望第二个选项适合您的情况。
| 归档时间: |
|
| 查看次数: |
3137 次 |
| 最近记录: |