1 android 设置用户进程为系统进程

随笔9个月前发布 小熠
144 0 0

1 了解用户进程与系统进程

对于用户自己编写的应用程序apk来说它本身跑到机器上只是一个用户进程

用户进程的特点

  • 1 由用户去启动和关闭的进程
  • 2 运行在用户权限下,只能访问用户自己的资源
  • 3 用户进程的apk一般位于/data/app/下且apk名称也是随机生成

系统进程的特点

  • 1 由系统来启动和管理进程
  • 2 具有更高的系统权限,可以访问系统的相关资源
  • 3 系统进程的apk一般为/system/目录下,且apk名称也来自你编写的mk文件

俩者不同之处
直观体验来说

  • 1 所在目录
  • 2 进程启动和管理

2 如何设置用户进程变为系统进程

首先设置用户应用程序的AndroidManifest.xml文件添加相关属性

<manifest xmlns:android="[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)"  
package="com.xxxx" 
 android:sharedUserId="android.uid.system" 
 coreApp="true">

<application
android:persistent="true"/>

  • 1 首先定义 android:sharedUserId=”android.uid.system” ,他保证应用程序共享用户id,而多个进程如果都共享相同的userid,他们是可以互相访问内部数据的,这也就存在了危险性
  • 2 coreApp 设置核心应用程序,一般适用于只有服务的进程,确保这些关键服务可以在系统启动时得到优先加载和初始化,从而提高系统的稳定性和可靠性。本身也是存在风险的
  • 3 android:persistent 设备重启后自动启动

其次配置应用程序要设置platform签名,保证具有系统级别的权限和信任
build.gradle配置

signingConfigs {
    config {
        storeFile file('platform.keystore')
        storePassword 'android'
        keyAlias 'platform'
        keyPassword 'android'
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}

而且要有平台签名文件

1 android 设置用户进程为系统进程

配置完成后你编译的apk会包含系统签名,保证你可以具有系统权限

最后就简单看下应用程序mk的编写

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE        := xxxx
LOCAL_MODULE_CLASS  := APPS
LOCAL_MODULE_SUFFIX := .apk
LOCAL_MODULE_TAGS   := optional
LOCAL_SRC_FILES := xxx.apk

LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

LOCAL_DEX_PREOPT := false
LOCAL_PROGUARD_ENABLED := disabled


include $(BUILD_PREBUILT)

这种主要是针对你目录下的apk文件在系统编译时对文件进行编译打包,放入指定目录,在系统运行时就可以识别该应用程序

最后在device目录下的device.mk定义系统额外加载的模块

PRODUCT_PACKAGES += xxx

所以这些模块会在系统启动后自动安装到设备上,并且进程也启动了

好了,配置完上述这些,你的进程就是系统进程了,apk也会放在system目录下

pm list packages -f |grep xxxxx(进程名)

这个命令可以查看你的进程的apk所在路径,来帮助你判断你的进程文件是否位于系统目录

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...