在Android源码中为APK编译系统权限
系统权限获取
打包为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 := 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执行编译
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 := 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))
在Android源码中为APK编译系统权限的更多相关文章
- Eclipse与Android源码中ProGuard工具的使用
由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...
- Eclipse与Android源码中ProGuard工具的使用(代码混淆)
由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...
- android studio应用修改到android源码中作为内置应用
1. 方法一:导入,编译(太麻烦,各种不兼容问题) android studio和eclipse的应用结构目录是不同的,但是在android源码中的应用基本上都是使用的eclipse目录结构(在/pa ...
- Android源码中添加APP
参考罗升阳<Android系统源代码情景分析> 在Android源码中,我们通常把实验性质的Android APP放在packages/experimental目录下.对于一个简单的应用程 ...
- Android源码中的FLAG为何使用16进制
1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keyst ...
- 关于android源码中的APP编译时引用隐藏的API出现的问题
今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...
- 访何红辉:谈谈Android源码中的设计模式
最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计 ...
- 在Android源码中查找Java代码中native函数对应的C++实现
Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码: static native Thread currentThread(); 如何根据方法名 ...
- Android源码中添加C可执行程序
在Android源码中添加C/CPP可执行程序一般保存在external目录中 下面是每个文件的内容 ①add.c #include "add.h" int add (int a, ...
- 导入android源码中的APP源码到eclipse
导入android源码中的APP源码到eclipse 一般最简单的办法就是创建新的android工程,选择create project from existing source选项,直接导入源码就OK ...
随机推荐
- vue全局事件总线
首先在main.js中app实例中使用生命周期钩子添加组件 new Vue({ router, render: h => h(App), beforeCreate() { Vue.prototy ...
- 使用Flex布局的几个小技巧
前情 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 Flex 布局,如果说目前我开发中离不开的布局方式 ...
- 使用docker部署自己的网页版chatgpt
如果你有了一个Chat GPT账号想分享给多个人使用,最好还不用禾斗学上网别人就能访问,那么chatgpt-web这个项目可能刚好满足你的需求. 少点命令行,多点可视化,这里采用更直观的方式来搭建ch ...
- 关于 JavaScript 中的 Array.reduce()
关于 JavaScript 中的 Array.reduce() reduce() 方法在 MDN 的定义看起来很复杂: reduce((previousValue, currentValue, cur ...
- Yakit靶场-高级前端加解密与验签实战-全关卡通关教程
一.前端验签-SHA256 本文作者为CVE-柠檬i CSDN:https://blog.csdn.net/weixin_49125123 博客园:https://www.cnblogs.com/CV ...
- 测试覆盖率 Java 覆盖率 Jacoco 插桩的不同形式总结和踩坑记录
https://testerhome.com/topics/20632 关于Jacoco的小结和踩坑记录 一.概述 测试覆盖率,老生常谈的话题.因为我测试理论基础不是很好,就不提什么需求覆盖率啦这样那 ...
- 龙哥量化:通达信分时均线在5分钟K线图上显示
代写技术指标.量化策略,微信:Long622889 龙哥QQ:591438821 T1:=DAY<>REF(DAY,1);T2:=BARSLAST(T1)+1;JX:SUM(AMO,T2) ...
- Qt通用方法及类库13
函数名 //设置按钮样式 static QString setPushButtonQss(QPushButton *btn, //按钮对象 int radius = 5, //圆角半径 int pad ...
- 《Hough变换及其在信息处理中的应用》电子书下载
<Hough变换及其在信息处理中的应用>电子书下载:百度云盘, 提取码:9zyi
- IM开发快速入门(一):什么是IM系统?
本文在编写时参考了博客作者"鹿呦呦"和在线课程"即时消息技术剖析与实战"的相关资料,一并表示感谢. 1.系列文章引言 IM系统看似简单(没错,很多土老板认为开发 ...

