【发布时间】:2014-06-10 20:59:28
【问题描述】:
我已经在 Internet 上搜索了我的问题的答案,但遗憾的是我没有找到解决我的问题的方法。我什至在official forum 上写过这种情况,不幸的是,版主无法处理这个问题。下面我描述一下这个问题,希望有人遇到过类似的问题并知道解决办法。
我制作了一个在 Android 4.1 上运行良好的应用程序,这就是为什么我拒绝与缺少“某些东西”相关的问题。 目前,在较新版本的 android 中似乎是一个错误,因为在更新到 Android 4.3+(API 18+)后,我的应用程序显示消息:
/cache/recovery/command: open failed: EACCESS (permission denied)
我的应用程序是系统应用程序,所以文件*.apk被放在目录/system/app/
加上合适的文件访问权限(chmod),使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 (permission denied)
调用RecoverySystem.installPackage(...)方法时出现此错误。
(FileWriter command = new FileWriter(COMMAND_FILE); 其中COMMAND_FILE == /cache/recovery/command)
我不确定,但我认为可能的原因之一可能是“bootable/recovery/recovery.c”中的错误,但我找不到任何确认。
如果有人能提供帮助,我将不胜感激。
附:为避免互联网混乱,请勿发布诸如“使用 Google”、“已经是 - 我在某处看到过 - 但不记得在哪里”、“我有同样的问题/也不适合我”之类的文字,以及其他无助于解决问题的帖子。
@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,可以在公共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
错误仍然存在。
当我将我的应用推送到 system/app(并重新启动)时,该应用在应用中不可见。
【问题讨论】:
标签: android permissions