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

系统权限获取

打包为APK进行系统签名

对于 部分功能的访问需要使用到系统权限,需要 添加 android:sharedUserId="android.uid.system" 权限

makefile 复制代码
<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 名称为自己的名称

makefile 复制代码
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Factorytest
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_DEX_PREOPT := false
LOCAL_CERTIFICATE := platform
LOCAL_PRODUCT_MODULE := true
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include $(BUILD_PREBUILT)
  • 放入文件夹 vendor/rockchip/common/apps/Factorytest
  • 使用mm 执行 编译
shell 复制代码
build/envsetup.sh   # 加载环境
lunch  # 配置版本
cd vendor/rockchip/common/apps/Factorytest # 进入 文件放入的目录
mm -j$(nproc)  # 进行编译
  • 编译结果如下
  • 使用 ADB 向主板中 进行安装即可 (如果有相同包名程序已经安装了,记得对原有包名的程序进行删除)。

Android.mk 详解

makefile 复制代码
# 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 := true
endif


# 使用原签名
#LOCAL_CERTIFICATE := PRESIGNED
 #apk 签名使用系统签名
LOCAL_CERTIFICATE := platform
 # 设置参与编译SDK版本,(若是在Android.mk钟添加该选项,则编译时会忽略源码隐藏的API,故在使用源码hide api后会导致编译失败)
# LOCAL_SDK_VERSION := current

# 添加依赖的库,并将依赖库加入到 当前目录下 
LOCAL_JAVA_LIBRARIES := javax.obex
LOCAL_STATIC_JAVA_LIBRARIES += user_mode
LOCAL_STATIC_JAVA_LIBRARIES += apache
LOCAL_DEX_PREOPT := false

LOCAL_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))
相关推荐
8931519603 天前
Android开发检查是否是各大厂商手机的工具类
android·android开发·android教程·android检查手机厂商
8931519604 天前
Android开发BasePagerAdapter
android·android开发·viewpager·android教程·viewpageradapte
8931519608 天前
Android开发layer-list
android·android开发·android教程·layer-list·android启动页背景图
浩宇软件开发13 天前
Androidstudio实现一个app引导页(超详细)
android·android studio·android开发
8931519602 个月前
Android开发获取缓存,清理缓存工具类
android·缓存·android开发·android教程·android获取缓存·android清理缓存·android缓存工具类
浩宇软件开发2 个月前
Android开发,待办事项提醒App的设计与实现(个人中心页)
android·android studio·android开发
8931519604 个月前
Android仿简书创作弹起弹框
android·android开发·android教程·android弹框·android由上往下弹框·android由下往上弹框·android弹框动画
8931519604 个月前
Android开发仿qq详情下拉头像变大
android·android开发·android教程·android下拉头像变大·android详情头像变大·个人详情头像下拉变大·仿qq详情下拉头像变大
浩宇软件开发4 个月前
Android开发,使用TabLayout+ViewPager2实现校园健康安全宣传
android studio·android开发