Android:通过AOSP源代码创建新的系统权限.

use*_*216 20 permissions android operating-system kernel android-source

我想知道如何编辑Android操作系统源代码来强加新的权限.例如,我们拥有BLUETOOTH权限,如果设备提供了新的传感器,那么在应用程序级别使用清单条目为android rom中提供的新权限创建权限以便应用程序使用新传感器.

有人知道在AOSP源代码中如何在操作系统级别创建新的权限?

我认为如果我们修改了android源代码来添加新的权限,我们必须编译我们的自定义SDK以便在应用程序开发中使用权限,否则现有的SDK会给出编译时错误,因为它不会识别我们的自定义权限...

任何想法,想法高度赞赏.

Sta*_*kER 24

在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="vpn" />
    </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>
Run Code Online (Sandbox Code Playgroud)

其他权限定义不在上述文件中,因为Android中实际上有两种权限,如下图所示.仅在该文件中定义了Linux内核强制执行的权限.

Android中的权限执行

其他权限如ACCESS_FINE_LOCATION,READ_CONTACTS等在系统应用程序(packages /.../ AndroidManifest.xml)和框架(frameworks/base/core/res/AndroidManifest.xml)的AndroidManifest.xml中定义.

添加权限和相关代码后,根据Building Instruction编译和构建项目

  • 我自己画了.@ BjarkeFreund汉森 (3认同)
  • 我们今年发表了一篇论文.http://faculty.cs.tamu.edu/guofei/paper/VetDroid-CCS13.pdf,您可以阅读3.1.2部分.如果您有任何进一步的问题,请与我们联系.@AdiGuN (2认同)