Android:通过 AOSP 源代码创建新的系统权限。
Posted
技术标签:
【中文标题】Android:通过 AOSP 源代码创建新的系统权限。【英文标题】:Android: Create new System Permission in through AOSP source code. 【发布时间】:2013-01-31 00:42:23 【问题描述】:我想知道如何编辑 android 操作系统源代码以施加新权限。例如,我们有 BLUETOOTH 权限,如果设备提供了新的传感器,那么如何创建适当的权限以便应用程序使用新的传感器,在应用程序级别使用 android rom 中可用的新权限的清单条目。
有人知道如何在 AOSP 源代码的操作系统级别上创建新的权限吗??
而且我认为如果我们修改了 android 源以添加新权限,我们必须编译我们的自定义 SDK 以在应用程序开发中使用权限,否则现有 SDK 将给出编译时错误,因为它不会识别我们的自定义权限。 ..
任何想法,想法都非常感谢。
【问题讨论】:
【参考方案1】:在framework/base/data/etc/platform.xml中
您可以使用相应的 gid 定义新创建的权限。
<permissions>
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- The following tags are associating low-level group IDs with
permission names. By specifying such a mapping, you are saying
that any application process granted the given permission will
also be running with the given group ID attached to its process,
so it can perform any filesystem (read, write, execute) operations
allowed for that group. -->
<permission name="android.permission.BLUETOOTH_ADMIN" >
<group gid="net_bt_admin" />
</permission>
<permission name="android.permission.BLUETOOTH" >
<group gid="net_bt" />
</permission>
<permission name="android.permission.BLUETOOTH_STACK" >
<group gid="net_bt_stack" />
</permission>
<permission name="android.permission.NET_TUNNELING" >
<group gid="***" />
</permission>
<permission name="android.permission.INTERNET" >
<group gid="inet" />
</permission>
<permission name="android.permission.CAMERA" >
<group gid="camera" />
</permission>
<permission name="android.permission.READ_LOGS" >
<group gid="log" />
</permission>
...
</permission>
上述文件中没有其他权限定义,因为Android中实际上有两种权限,如下图所示。该文件中仅定义了 Linux 内核强制执行的权限。
ACCESS_FINE_LOCATION、READ_CONTACTS 等其他权限在系统应用程序(packages/.../AndroidManifest.xml)和框架(frameworks/base/core/res/AndroidManifest.xml)的 AndroidManifest.xml 中定义。
添加权限和相关代码后,根据Building Instruction编译构建项目
【讨论】:
+1 对于 IPC 插图,是您自己画的还是在某个地方找到的? 我自己画的。 @BjarkeFreund-Hansen @StarPinkER 你能否提供更多关于 IPC 如何在 android 应用程序中发生的信息。当应用实际请求位置时,如果不抛出异常,操作系统如何验证应用是否具有相应的权限。 我们今年发表了一篇论文。 faculty.cs.tamu.edu/guofei/paper/VetDroid-CCS13.pdf ,您可以阅读 3.1.2 部分。如果您有任何进一步的问题,请告诉我。 @AdiGuN 如果将来有人看到这个答案,则需要在 frameworks/base/core/res/AndroidManifest.xml 中进行额外的更改。在这里参考我的回答***.com/a/49565570/553094以上是关于Android:通过 AOSP 源代码创建新的系统权限。的主要内容,如果未能解决你的问题,请参考以下文章
使用Android Studio调试安卓系统源代码:将AOSP源码整体导入到AS
Android 11使用Android Studio调试系统应用:编译服务器的配置AOSP源码的下载编译运行