Android源码编译_内置apk

2024-09-02 11:12
文章标签 编译 android 源码 内置 apk

本文主要是介绍Android源码编译_内置apk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发过程中,有一部分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 =currentinclude $(BUILD_PACKAGE)
include $(CLEAR_VERS)
include $(call all-makefiles-under,$(LOCAL_PATH))

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

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

这篇关于Android源码编译_内置apk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129790

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo