0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开发system权限的App并内置到Android系统的步骤

哆啦安全 来源:卓码星球 2023-08-18 10:03 次阅读

1.内置App到手机系统

以下以内置搜狗输入法为例说明

1.1 源码中创建存放Apk目录

在源码目录packages下面创建mypackages/sougou目录用来保存搜狗输入法的apk文件。创建好之后如下所示:

qiang@ubuntu:~/lineageOs/packages/myapps/sougou$pwd
/home/qiang/lineageOs/packages/myapps/sougou
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$

存放目录创建好之后,将搜狗输入法的apk放到sougou目录下。如下所示:

qiang@ubuntu:~/lineageOs/packages/myapps/sougou$ls-lasougou.apk
-rwxrwxrwx1qiangqiang5987027211月307:35sougou.apk
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$

1.2 创建模块编译文件Android.mk

在目录"packages/myapps/sougou"中创建sougou输入法模块的编译配置文件Android.mk。内容如下:

#///ADDSTART
#///ADDEND
#设置当前工作路径
LOCAL_PATH:=$(callmy-dir)

#清除变量值
include$(CLEAR_VARS)
#生成的模块名称
LOCAL_MODULE:=sougou

#生成的模块类型
LOCAL_MODULE_CLASS:=APPS
#生成的模块后缀名,此处为apk
LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
#设置模块tag,tags取值可以为:userdebugengtestsoptional
#optional表示全平台编译
LOCAL_MODULE_TAGS:=optional

#LOCAL_PRIVILEGED_MODULE:=true

LOCAL_BUILT_MODULE_STEM:=package.apk

#设置源文件
LOCAL_SRC_FILES:=$(LOCAL_MODULE).apk

#LOCAL_CERTIFICATE:=platform
#设置签名,此处表示保持apk原有签名
LOCAL_CERTIFICATE:=PRESIGNED
#此处表示预编译方式
include$(BUILD_PREBUILT)

模块编译文件创建好之后的目录情况如下:

qiang@ubuntu:~/lineageOs/packages/myapps/sougou$ls
Android.mksougou.apk
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$
qiang@ubuntu:~/lineageOs/packages/myapps/sougou$

1.3 将模块加入源码编译链

在安卓系统中,App模块加入编译链可以放到如下文件中:

build	argetproducthandheld_product.mk

将"sougou"模块加入之后的内容如下:

...
#/productpackages
PRODUCT_PACKAGES+=
...
sougou
...

以上修改完成之后编译系统刷机就可以看到系统内置"搜狗输入法"到手机系统了。

说明:

1.如果内置的为可执行程序,一般将模块编译链放到路径"buildmake	argetproductase_system.mk"

2.如果内置的为App程序,一般将模块编译链加入到路径"build	argetproducthandheld_product.mk"

2.安卓中开发具有System权限的App

2.1 开发System权限的App流程

在这里使用Android Studio工具创建一个App工程,比如"FridaControl"。如果想要自己开发的App内置到手机系统具有system权限,需要在开发App阶段在AndroidManifest.xml中添加"android:sharedUserId="android.uid.system""属性配置。完整配置的参考如下:

















2.2 内置编译好的apk到手机系统

内置过程和内置搜狗输入法的操作流程一样。差异在于Android.mk的时候需要注意一下内容,需要将"LOCAL_CERTIFICATE := platform"加上,表示使用系统签名。

如果不加这句话就算AndroidManifest.xml加入了system权限配置,但是也不会生效。

完整Android.mk参考如下:

LOCAL_PATH:=$(callmy-dir)

include$(CLEAR_VARS)

LOCAL_MODULE:=ControlFrida

LOCAL_MODULE_CLASS:=APPS

LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_MODULE_TAGS:=optional

#关闭dex优化,生成独立的apk
LOCAL_DEX_PREOPT:=false

LOCAL_BUILT_MODULE_STEM:=package.apk

#设置源文件
LOCAL_SRC_FILES:=$(LOCAL_MODULE).apk

#这个地方比较重要
#设置签名,此处表示使用系统签名
LOCAL_CERTIFICATE:=platform

#此处表示预编译方式
include$(BUILD_PREBUILT)

3.编译测试验证

以上配置好之后编译刷机。

以下是我内置的一个App具有system权限的验证展示如下:

C:UsersQiang>adbshellps-Z|findstr"com.android.studycontrolfridaserver"
usystem_app:s0system7523918512822878040SyS_epoll_wait74b9ab7248Scom.android.studycontrolfridaserver

C:UsersQiang>
C:UsersQiang>

以上可以看到运行的Appselinux域为usystem_app:s0,并且app的运行用户为system。所以该App具备了system权限。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android系统
    +关注

    关注

    0

    文章

    56

    浏览量

    13503
  • SRC
    SRC
    +关注

    关注

    0

    文章

    60

    浏览量

    17993
  • apk
    apk
    +关注

    关注

    0

    文章

    23

    浏览量

    4937

原文标题:开发system权限的App并内置到Android系统

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Android系统与应用开发内容介绍

    、配置网络,使用内置浏览器上网 第七阶段 4 基于Android平台的应用程序开发目标:熟悉Android的应用程序框架,在构建好的Android
    发表于 07-13 14:03

    Android系统文件权限解释

    众所周知,安卓是基于linux开发的,因此想要了解android系统文件的权限,需要从Linux说起。  Linux系统
    发表于 07-10 15:10

    AM335X开发Android 应用程序获得system权限的方法

    app工程添加Android.mk文件,其中的LOCAL_CERTIFICATE要赋值为platform,即用系统的签名,通过这种方式只能使应用程序的权限升级
    发表于 05-20 17:55

    i.MX6Q开发Android APP签名安装问题的解决方法

    :Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE这是因为APP的源码中的AndroidManifest.xml文件中设置了system
    发表于 10-25 16:37

    基于SnapDragonBoard410c内置文佳System

    前段时间项目上需要我们内置文件System/文件夹下,所以本次我和大家分享一下如何在Android源码中内置文件。 (1)我们先去高通网站
    发表于 09-25 16:51

    Android 系统添加SELinux权限

    CPU:RK3288系统Android 5.1SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。通过虚拟文件系统 p
    发表于 02-09 22:49

    iMX6 Android系统下常见问题解决思路

    以下设置system权限的方法试一试。可以看一下eclipse中调试信息如下:Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE这是因为APP的源码中的
    发表于 02-21 08:59

    请教大神有些APP是怎样去获取root权限的呢

    请教大神有些APP是怎样去获取root权限的呢?Android8.1系统是如何定制赋予用户root权限的?
    发表于 02-14 07:17

    如何去实现Android 8.1默认给APP获取自动权限

    如何去实现Android 8.1默认给APP获取自动权限呢?求大神解答
    发表于 02-15 07:14

    iMX6常见 Android系统问题

    Android应用后,安装不到iMX6开发板上,可以通过以下设置system权限的方法试一试。 可以看一下eclipse中调试信息如下: Installation error
    发表于 08-29 10:32

    Android系统权限提升攻击检测技术_王聪

    Android系统权限提升攻击检测技术_王聪
    发表于 03-19 11:41 0次下载

    Android 开发环境搭建步骤详细图解

    Android 开发环境搭建步骤详细图解
    发表于 10-24 08:49 11次下载
    <b class='flag-5'>Android</b> <b class='flag-5'>开发</b>环境搭建<b class='flag-5'>步骤</b>详细图解

    Android开发APP应该如何省电

    AndroidManifest.xml中加上DEVICE_POWER的权限。可是加了权限之后,ADT又提示错误“Permission is only granted to system
    发表于 07-30 17:35 0次下载
    <b class='flag-5'>Android</b><b class='flag-5'>开发</b><b class='flag-5'>APP</b>应该如何省电

    鸿蒙APP开发鸿蒙权限请求框架

    /posts/5165 权限控制是在进行 HarmonyOS 应用开发中非常重要的一个环节,几乎所有的商业应用中都会涉及。 我们在曾经使用的 Android
    的头像 发表于 09-28 09:19 2968次阅读

    Android挂载system文件夹读写权限

    Android系统中,system文件夹一般都是只读属性,无论是root用户还是普通权限用户,在Android安全研究或
    的头像 发表于 08-08 09:36 1.4w次阅读
    <b class='flag-5'>Android</b>挂载<b class='flag-5'>system</b>文件夹读写<b class='flag-5'>权限</b>