Android源码编译_内置apk

news2024/12/24 3:04:57

在开发过程中,有一部分apk,我们是需要出厂内置好的,例如输入法、客户定制app等,这里内置分两种,一种是只内置apk,不含apk源码,一种是包含apk源码。

一、如何将apk内置到系统

1、首先将apk放到系统源码中

1.1. 可以直接放在 packages/apps/ 下面
1.2. 也可以自己创建一个文件,专门存放需要内置的apk

2、在apk同目录下添加 Android.mk 文件,例如我们这里内置SystemToolService.apk

在这里插入图片描述

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#源码编译出的apk名称
LOCAL_PACKAGE_NAME
 #存储您要构建的模块的名称,每个模块名称必须唯一,且不含任何空格.如果未设置,则默认使用
LOCAL_MODULE := SystemToolService
 #编译的java文件文件路径
LOCAL_SRC_FILES := SystemToolService.apk
 #这个主要用于是 eng、user还是 userdebug 版本参与编译; optional值所有版本都参与编译
LOCAL_MODULE_TAGS := optional
 #标识所编译模块放置的位置, APPS表示放置在/system/app目录下。
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#可以为testkey、platform、shared、media、PRESIGNED(使用原签名),platform代表为系统应用
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

(注:1)默认预置apk到system/app/目录,LOCAL_MODULE_PATH:= $(TARGET_OUT_APPS) 普通系统apk,不可卸载
2)LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) 放在该目录下的apk可以卸载,卸载后,恢复出厂设置时,应用不会恢复。
3)LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app/ 放在该目录下的apk可以获得系统权限,系统核心apk,不可卸载(或者加入一句: LOCAL_CERTIFICATE:= PRESIGNED)。
4)?LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app, 预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复

3、添加到系统中编译

打开AndroidAOSP/build/make/target/product/handheld_product.mk,加入我们的apk模块
在这里插入图片描述
然后整体编译,编译成功
在这里插入图片描述
刷机测试,内置完成
在这里插入图片描述

二、如何将apk源码内置到系统

1、准备工作一样,只是将应用的源码,app目录放到源码中

2、创建Android.mk文件

LOCAL_PATH := $(call my-dir)
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 := XXXX
 #apk 签名
LOCAL_CERTIFICATE := platform
#LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_SDK_VERSION =current
 
include $(BUILD_PACKAGE)
include $(CLEAR_VERS)
include $(call all-makefiles-under,$(LOCAL_PATH))

3、同上内置apk一样,将模块放到系统编译中,然后就可以编译刷机测试了。

希望对开发的你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】XSS+OTP绕过+账户接管

未经许可,不得转载。 文章目录 正文XSSOTP绕过账户接管正文 目标:www.example.com XSS 不断寻找可能存在XSS的点位。 终于,在个人资料页面:www.example.com/profile_details.php?userid= ,使用Payload<script>alert(1)</script>,实现XSS: 因此,能够实…

【书生大模型实战营】进阶岛 第4关 InternVL 多模态模型部署微调实践

文章目录 【书生大模型实战营】进阶岛 第4关 InternVL 多模态模型部署微调实践学习任务什么是InternVLInternVL 模型总览Dynamic High ResolutionPixel ShuffleInternVL 部署微调实践准备InternVL模型准备环境激活虚拟环境&#xff08;注意&#xff1a;后续的所有操作都需要在这…

数字化转型下的高效设备管理:构建智能化、精细化管理体系

企业应对日益复杂的设备管理挑战&#xff0c;通过数字化、智能化手段提升设备管理效率与设备可用性&#xff0c;具体体现在以下几个方面&#xff1a; 全面信息化与结构化&#xff1a;系统首先解决了设备信息散乱无序的问题&#xff0c;通过在线建档与台账管理&#xff0c;将设备…

记一次学习--webshell绕过(利用清洗函数)

目录 样本 样本修改 样本 <?php $a array("t", "system"); shuffle($a); $a[0]($_POST[1]); 通过 shuffle 函数打乱数组,然后通过$a[0]取出第一个元素&#xff0c;打乱后第一个元素可能是t也可能是system。然后再进行POST传参进行命令执行。 这里抓…

Ubuntu 安装个人热点

1. 安装必要的软件 首先&#xff0c;我们需要确保有一些工具已经装好&#xff0c;这些工具会帮助我们创建 Wi-Fi 热点。打开终端&#xff0c;输入以下命令来安装这些工具&#xff1a; sudo apt-get install git hostapd iptables dnsmasq 2. 下载并安装 create_ap 我们接下来…

RabbitMQ 02 操作,配置信息

01.介绍启动&#xff0c;关闭 02.环境 2.1 MQ是用Erlang语言写的 2.2 一个RabbitMQ 节点 一个 Erlang节点一个Erlang 程序 &#xff08;RabbitMQ程序&#xff09; 2.3 Erlang节点&#xff1a; 这个是Erlang节点集群状态下&#xff1a; 2.4 启动节点 2.5 查看日志信息 …

【KingbaseES 人大金仓】| Docker 部署 | 详细步骤

文章目录 版本说明准备工作第 1 步:导入 Docker 镜像第 2 步:创建容器相关说明运行容器第 3 步:查看运行状态第 4 步:使用 ksql 访问数据库第 5 步:修改 license第 6 步:修改配置文件【可选】✅ 本文目标:了解 KingbaseES 数据库、了解 KingbaseES 数据库版本、Docker 部…

CNN中的注意力机制综合指南:从理论到Pytorch代码实现

注意力机制已经成为深度学习模型&#xff0c;尤其是卷积神经网络&#xff08;CNN&#xff09;中不可或缺的组成部分。通过使模型能够选择性地关注输入数据中最相关的部分&#xff0c;注意力机制显著提升了CNN在图像分类、目标检测和语义分割等复杂任务中的性能。本文将全面介绍…

C#开发基础之多线程编程的常见错误实践和最佳实践

前言 在多线程编程中&#xff0c;由于存在共享资源和竞争条件等问题&#xff0c;容易出现各种错误。以下是一些常见的多线程编程错误及如何避免它们&#xff1a; 1. 竞态条件&#xff08;Race Condition&#xff09; 在多个线程同时访问共享资源时&#xff0c;可能会发生数据…

计算机网络 第1章

计算机网络概念 计算机网络&#xff08;Computer networking&#xff09;是一个分散的、自治的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 计算机网络&#xff08;简称网络&#xff09;&#xff1a;由若干结…

CAD | 背景改为白色

Op空格 打开选项面板 /或者直接右键选项 然后 显示-颜色-二位模型空间-统一背景-白-应用并关闭-确定

Red Hat 9 — Red Hat 9.4Linux系统 虚拟机安装【保姆级教程】

Mac分享吧 文章目录 效果一、下载软件二、安装软件与配置1、安装2、配置 三、查看基本信息安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 地址&#xff1a;www.macfxb.cn 二、安装软件与配置 1、安装 2、配置 三、查看基本信息 安装完成&#xf…

Python批量提取pdf标题-作者信息

程序示例精选 Python批量提取pdf标题-作者信息 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python批量提取pdf标题-作者信息》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0…

编译FFmpeg动态库

编译FFmpeg动态库 环境 macOS High SierraFFmpeg 4.3android-ndk-r21b 编译so库 下载FFmpeg4.3源代码&#xff0c;进入源码目录创建build_android.sh脚本&#xff0c;ffmpeg从4.0起新增了target-osandroid&#xff0c;所以不用再修改configure文件。 注意&#xff1a; ndk…

WPF 手撸插件 七 日志记录

1、环境日志这里使用的是log4net. 2、WPF全局捕获异常&#xff0c;代码如下。 using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Reflection; using System.Threading.Ta…

系统架构设计师——系统性能

性能指标 计算机性能指标 操作系统性能指标 网络的性能指标 数据库的性能指标 数据库管理系统的性能指标 应用系统的性能指标 Web服务器的性能指标 性能计算 定义法 计算方法主要包括定义法、公式法、程序检测法和仪器检测法。这些方法分别通过直接获取理想数据、应用衍生出的…

【docker】docker 镜像仓库的管理

Docker 仓库&#xff08; Docker Registry &#xff09; 是用于存储和分发 Docker 镜像的集中式存储库。 它就像是一个大型的镜像仓库&#xff0c;开发者可以将自己创建的 Docker 镜像推送到仓库中&#xff0c;也可以从仓库中拉取所需的镜像。 Docker 仓库可以分为公共仓…

Jsoncpp的安装与使用

目录 安装Jsoncpp Jsoncpp的使用 Value类 构造函数 检测保存的数据类型 提取数据 对json数组的操作 对Json对象的操作 FastWriter类 Reader类 JsonCpp 是一个C库&#xff0c;用于解析和生成JSON数据。它支持解析JSON文件或字符串到C对象&#xff0c;以及将C对象序列…

MySQL的安装—>Mariadb的安装(day21)

该网盘链接有效期为7天&#xff0c;有需要评论区扣我&#xff1a; 通过网盘分享的文件&#xff1a;mariadb-10.3.7-winx64.msi 链接: https://pan.baidu.com/s/1-r_w3NuP8amhIEedmTkWsQ?pwd2ua7 提取码: 2ua7 1 双击打开安装软件 本次安装的是mariaDB&#xff0c;双击打开mar…

SprinBoot+Vue学生选课微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…