当前位置: 首页 > article >正文

android12源码中用第三方APK替换原生launcher

一、前言

如何用第三方的apk替换原生launcher呢?我是参考着这位大神的博客https://blog.csdn.net/hyu001/article/details/131044358做的,完美实现。
这边博客中又加入了我个人的一些改变,整理的。

二、步骤

1.在/packages/apps/MyApp文件夹,将MyApp.apk文件复制到此文件夹,新建Android.mk文件,写入以下配置信息:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := duduCar
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
​
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
​
​
#获得apk中 armeabi-v7a 下所有的so
#define get-all-libraries-module-name-in-subdirs
#$(sort $(shell cd $(LOCAL_PATH) ; rm -rf lib >/dev/null ; unzip $(LOCAL_MODULE).apk 'lib/armeabi-v7a/*.so' -d . >/dev/null ; #find -L $(1) -name "*.so"))
#endef
#ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/armeabi-v7a)
#LOCAL_PREBUILT_JNI_LIBS := $(ALL_LIBRARIES_MODULE_NAME)
​
LOCAL_OVERRIDES_PACKAGES := Launcher2 Launcher3 Launcher3QuickStep CarLauncher
​
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

请注意,如果你的apk中有.so文件,那么,你需要将上面代码中的注释的代码给放开。
2.修改/build/target/product/下的base_system.mk文件,添加"MyApp"

# Packages included only for eng or userdebug builds, previously debug tagged
PRODUCT_PACKAGES_DEBUG := \
    *********************************
    unwind_symbols \
    MyApp \     //添加此行

3.修改/build/target/product/下的handheld_system_ext.mk文件,刪除"Launcher3QuickStep "

# /system_ext packages
PRODUCT_PACKAGES += \
    Provision \
    Settings \
    StorageManager \
    SystemUI \
    WallpaperCropper \

4.重新编译

make clobber  # 清除这一步一定要加上,否则会编译报错
source build/envsetup.sh # 导入环境
lunch sdk_phone_x86_64 # 选择系统
make -j12  # 编译
make snod  # 快速打包生成最新的system.img文件(这个命令是必须的,要不模拟器会黑屏,不显示内容)
emulator #启动模拟器

编译过程非常耗时,请耐心等待。当你再启动模拟器时,原生的Launcher就不会再出现了,出现的是你自己的Launcher

结尾

好了就讲到这里吧,希望对大家有所帮助

参考资料

https://blog.csdn.net/hyu001/article/details/131044358)https://blog.csdn.net/hyu001/article/details/131044358


http://www.kler.cn/a/519248.html

相关文章:

  • hadoop==docker desktop搭建hadoop
  • 乒乓球日常烧拍日记之四海绵支撑
  • 独立开发者常见开发的应用有哪些
  • vue3 获取百度天气
  • #HarmonyOS篇:build-profile.json5里面配置productsoh-package.json5里面dependencies依赖引入
  • 全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析
  • 半小时速通flume-flume正文学习
  • 【深入理解SpringCloud微服务】Sentinel源码解析——DegradeSlot熔断规则
  • 【漫话机器学习系列】060.前馈神经网络(Feed Forward Neural Networks, FFNN)
  • 能源新动向:智慧能源平台助力推动新型电力负荷管理系统建设
  • 面试技巧——压力面题目与参考答案
  • 软件越跑越慢的原因分析
  • (一)QT的简介与环境配置WIN11
  • Vivado生成X1或X4位宽mcs文件并固化到flash
  • ES设置证书和创建用户,kibana连接es
  • 【前沿聚焦】机器学习的未来版图:从自动化到隐私保护的技术突破
  • 通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
  • Python 字符串加密
  • 什么是业务对象
  • C++练习 —— 命名空间、引用、类的定义、构造函数和析构函数、运算符重载、const成员函数、类相关OJ题
  • 2024:人工智能大模型的璀璨年代
  • 在 ASP.NET Core 6.0 Web API 中将 Excel 文件数据上传并保存到数据库中
  • 数据结构初阶之栈的介绍与栈的实现
  • C语言程序设计十大排序—希尔排序
  • 代码随想录-训练营-day14
  • 设计模式Python版 工厂方法模式