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