如何在Android 9.0上获得系统应用权限

时间:2019-11-11 08:32:22

标签: android

我想为我的应用授予Android 9.0设备上的系统权限“ INJECT_EVENTS”,但是我不能。

  • 设备已植根
  • apk已使用AOSP存储库中的证书进行了签名
  • 通过在其中复制apk并重新启动,将
  • apk安装在/ system / app /中
  • apk的清单包含:
<uses-permission android:name="android.permission.INJECT_EVENTS"
                     android:protectionLevel="signature"
                     tools:ignore="ProtectedPermissions" />

我还阅读了https://source.android.com/devices/tech/config/perms-whitelist文章,并将apk移至/ system / priv-app,然后尝试在接下来的位置使用inject_events权限将我的apk列入白名单:

第一次尝试:

  • apk:/ system / priv-app
  • 编辑:/system/etc/permissions/priv-app.com.my.apk.xml (无需重新启动)

第二次尝试:

  • apk:/ system / priv-app
  • 编辑:/etc/permissions/priv-app.com.my.apk.xml  /etc/permissions/privapp-permissions-platform.xml (重新启动,仍然没有利润)

这是两个文件中我的白名单编辑的样子:

    <privapp-permissions package="com.my.apk">
       <permission name="android.permission.INJECT_EVENTS"/>
    </privapp-permissions>
   </permissions>

*我试图通过使用“ PackageManager”对logcat进行grep调试来进行调试,但是没有什么用。此外,adb shell dumpsys package myapk | grep permission显示未授予permission.INJECT_EVENTS

重要:在android 8.1上运行时,apk被授予inject_events。没有使用白名单。

完成所有操作后,预计将授予inject_events,但不会。

1 个答案:

答案 0 :(得分:0)

我解决了。 问题是我有SAMSUNG A205FN。以及由三星公司签名的股票ROM。要将我的应用转换为系统应用,我需要使用ROM的符号进行签名。通常,这是Android版本签名,可以在其回购中找到。但是三星的签名是一个秘密的签名,所以这是不可能的。

解决方法:如果您拥有SAMSUNG手机,只需刷新GSI ROM并使用Android的签名即可。

P.S。为了了解我应该使用什么签名,我从电话中取出了所有系统应用程序和priv-apps,并阅读了它们的签名。它显示所有这些都由三星签名,而没有一个由Android签名。也许,因为那是一种更简单的方法。

首先,找到所有priv-app apk并将其复制到pc:

adb shell find /system/priv-app -name "*.apk" -exec cp {} /path/to/copy \;

,然后打印证书并通过“通用名称” CN grep证书。您也可以使用CN = Android或其他方式关闭页面

ls | xargs -L 1 keytool -printcert -jarfile | grep CN=

P.S。如果您没有SAMSUNG手机,则可以轻松地将应用程序转换为系统应用程序,可以使用 systemizer 应用程序(Magisk-> Modules-> Systemizer并下载)