English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 0|回复: 0

在Android源码中为APK编译系统权限

[复制链接]
查看: 0|回复: 0

在Android源码中为APK编译系统权限

[复制链接]
查看: 0|回复: 0

216

主题

0

回帖

658

积分

高级会员

积分
658
7EykAb1R

216

主题

0

回帖

658

积分

高级会员

积分
658
2025-2-24 20:42:05 | 显示全部楼层 |阅读模式
系统权限获取

打包为APK进行系统签名

对于 部分功能的访问需要使用到系统权限,需要 添加 android:sharedUserId="android.uid.system" 权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    package="com.example.RBTest"    coreApp="true"    android:sharedUserId="android.uid.system">


  • 将app编译成 可 安装的 APP

  • 编译成功之后,将app 的后缀名 修改为 rar 根据如下操作 删除对应的 签名文件  (不删除也可,此处 重新 签名 会进行覆盖)
  • 删除完成之后 将文件后缀名改为 app

创建app文件夹 并开始书写 Android.mk 文件

  • 修改LOCAL_MODULE 名称为自己的名称
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := FactorytestLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_TAGS := optionalLOCAL_BUILT_MODULE_STEM := package.apkLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_DEX_PREOPT := falseLOCAL_CERTIFICATE := platformLOCAL_PRODUCT_MODULE := true#LOCAL_PRIVILEGED_MODULE := trueLOCAL_SRC_FILES := $(LOCAL_MODULE).apk#LOCAL_REQUIRED_MODULES :=#LOCAL_PREBUILT_JNI_LIBS :=include $(BUILD_PREBUILT)


  • 放入文件夹  vendor/rockchip/common/apps/Factorytest
  • 使用mm 执行 编译
build/envsetup.sh   # 加载环境lunch  # 配置版本cd vendor/rockchip/common/apps/Factorytest # 进入 文件放入的目录mm -j$(nproc)  # 进行编译


  • 编译结果如下



  • 使用 ADB 向主板中 进行安装即可  (如果有相同包名的程序已经安装了,记得对原有包名的程序进行删除)。

Android.mk 详解

# mk文件必须由Local_PATH开始,用,用于在开发系统源码tree中查找源文件,宏my-dir由Build Systemt提供,包括Android.mk的目录路径LOCAL_PATH := $(call my-dir)# CLEAR_VARS 变量是编译系统include $(CLEAR_VARS) #这个主要用于是 eng、user还是 userdebug 版本参与编译; optional  值所有版本都参与编译LOCAL_MODULE_TAGS   := optional #编译的java文件文件路径LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java) #需要编译的 AndroidManifest.xml 文件LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml #编译的资源文件文件路径LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/app/src/main/res #编译出的apk的名称LOCAL_PACKAGE_NAME := LinuxTest # 使用SDK中隐藏的API参与编译  LOCAL_SDK_VERSION 和 LOCAL_PRIVATE_PLATFORM_APIS 两者仅仅定义一个即可ifneq ($(PLATFORM_VERSION),8.1.0)LOCAL_PRIVATE_PLATFORM_APIS := trueendif# 使用原签名#LOCAL_CERTIFICATE := PRESIGNED #apk 签名使用系统签名LOCAL_CERTIFICATE := platform # 设置参与编译SDK版本,(若是在Android.mk钟添加该选项,则编译时会忽略源码隐藏的API,故在使用源码hide api后会导致编译失败)# LOCAL_SDK_VERSION := current# 添加依赖的库,并将依赖库加入到 当前目录下 LOCAL_JAVA_LIBRARIES := javax.obexLOCAL_STATIC_JAVA_LIBRARIES += user_modeLOCAL_STATIC_JAVA_LIBRARIES += apacheLOCAL_DEX_PREOPT := falseLOCAL_STATIC_ANDROID_LIBRARIES := \    android-support-v4 \    android-support-v7-recyclerview \    android-support-v7-preference \    android-support-v7-appcompat \    android-support-v14-preference \    android-support-v17-preference-leanback \    android-support-v17-leanback \    android-arch-lifecycle-extensions    LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := user_mode:user_mode.jar \                                        apache:org.apache.http.legacy.jar include $(BUILD_PACKAGE)include $(CLEAR_VERS)include $(call all-makefiles-under,$(LOCAL_PATH))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

216

主题

0

回帖

658

积分

高级会员

积分
658

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-12 00:56 , Processed in 2.023165 second(s), 31 queries .

Powered by 智能设备

©2025

|网站地图