Android系统——AOSP相关-->随记
1.Android 11 -- 强制清理app后台,关于权限引发的问题2.Android 11 (MTK)状态栏图标反色-->跟随当前应用变化代码流程3.Android 11 --关于Toast的异常4.Android 11 -- 关于dialog和悬浮窗导致SystemUI状态栏下拉频繁闪烁(窗口焦点问题)5.Android 11 下拉菜单长按WiFi图标SystemUI ANR6.Android 11 sim卡来电不弹出悬浮通知,默认来电默认全屏7.Android Bluetooth 蓝牙开发/蓝牙协议 小结8.Android11 —— 自定义添加一个System Services
9.Android系统——AOSP相关-->随记
10.Android11 , Launcher3 切换阿拉伯语,最近应用(后台)不能滑动11.Android 底层问题日志记录12.Android 11 -- app 服务保活13.Android11 - 添加自定义服务注意事项14.Android 11 导航栏添加一个虚拟按钮--问题合集15.Android 11--设置第三方Launcher并默认 与 如何预置apk16.Android11 系统修改 AOSP输入法的默认输入键盘布局17.Settings里面切换不同Launcher的代码流程18.关于Android`系统默认屏保`19.关于Android 11 Settings添加新的选项界面的细节20.Android 11 自由窗口模式 || 全屏模式启动app21.强制app横屏显示或者竖屏显示(动态)22.Android 11 禁止从SD卡上安装第三方应用23.实体物理音量键替换为home键24.AMS- kill Launcher进程的代码流程25.Android 11 recovery恢复出厂设置保留某些文件26.Android 11 禁用 adb root (userdebug版本)27.Android11 应用默认获取通知使用权限(可以获取系统所有通知信息)28.Android 11 UsbDebug 关于adb RSA 认证29.Android 11 NavigationBar && Status Bar 如果改变背景颜色30.Anroid 11 关于NotificationManager && NotificationManagerService -- 衍生到权限管理31.Android13 控制设置界面 双栏显示或单栏显示32.Android 13 大屏显示时关于SystemUI和Launcher3问题33.Android 系统适配无源码app34.Android 11 关于app的权限重置35.Android 11.0 关于app进程保活36.Android 11 关于按键拦截/按键事件处理分享37.Android R Settings关于屏保/PowerManagerService欺骗系统不让其进入休眠状态38.Android13 关于SystemUI更新/Nav Bar add volume button&&other button39.Android 13 移植EthernetSettings/Ethernet更新40.Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画41.Android T(13) The app is granted permissions by default42.Android T 关于屏幕旋转 (一)43.Android T about screen rotation(二)44.Android 13 about launcher3 (1)45.Android T don't abort background activity starts46.Android T adout replace bootanimation47.Launcher start App WINDOWING_MODE_FREEFORM48.Android 11 About SleepToken / (Settings)Screen timeout49.Settings.System数据监听/prop&SystemProperties数据监听杂记
android.bp 和android.mk 参与编译的jar包 路径--> out\target\common\obj\JAVA_LIBRARIES\
git diff ./ > a.patch git 拿到不同的改动 生成文件
mmma frameworks/base/packages/SystemUI/ > ../systemui.txt 编译文件
高效抓取日志
adb shell logcat > d:/0819.log
logcat -v time | grep "select_device" 遍历筛选
adb shell logcat -s CommandParser 只抓取-s 后面的标签的日志:(-s 类名)
关于路径
./build/make/core/envsetup.mk //路径的定义
# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
# Define them here so they can be used in product config files.
TARGET_COPY_OUT_SYSTEM := system
TARGET_COPY_OUT_SYSTEM_OTHER := system_other
TARGET_COPY_OUT_DATA := data
TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
TARGET_COPY_OUT_OEM := oem
TARGET_COPY_OUT_RAMDISK := ramdisk
TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
TARGET_COPY_OUT_ROOT := root
TARGET_COPY_OUT_RECOVERY := recovery
编译APK
解决方案:1.将apk作为文件编译复制进/system/app内 2,拿到源码,查看问题 解决 ,重新编译一个apk
[copyFile](http://t.zoukankan.com/codeking100-p-10309929.html) apk利用PRODUCT_COPY_FILES 报错详解
方法1 》 使用双层文件夹/xx/Video/Video copy 待定
PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,vendor/qcom/qualcomms/proprietary/packages/Video/*,system/app)
需要将当前目录下的所有so文件拷贝到/system/lib目录下:
PRODUCT_COPY_FILES += \
$(call find-copy-subdir-files,*.so,$(LOCAL_PATH)/lib,system/lib)
方法2 》 shell命令 可以copy成功,但是最后build报mk语法的错误:missing separator还有一些奇怪的错误,也许这个东西不能放在它的Android.mk中
$(shell mkdir -p ${PATH}/system/etc/)源码编译的时候,先读取该mk文件,该目录还没创建,所以要建一个,否则拷贝失败。
$(shell cp -rf $(LOCAL_PATH)/usb_modeswitch ${OUT)}/system/etc/),然后通过shell拷贝任意文件。
//如果copy apk报错
修改build\core\Makefile,注释掉check-product-copy-files的定义
#define check-product-copy-files
#$(if $(filter-out $(TARGET_COPY_OUT_SYSTEM_OTHER)/%,$(2)), \
# $(if $(filter %.apk, $(2)),$(error \
# Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT instead!)))
#endef
//如果copy .so报错(Android T)
build/make/core/Makefile
check-elf-prebuilt-product-copy-files:
-check_elf_prebuilt_product_copy_files := true
-ifneq (,$(filter true,$(BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES)))
-check_elf_prebuilt_product_copy_files :=
-endif
+# check_elf_prebuilt_product_copy_files := true
+# ifneq (,$(filter true,$(BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES)))
+# check_elf_prebuilt_product_copy_files :=
+# endif
check_elf_prebuilt_product_copy_files_hint := \
shell 命令
#拷贝文件到指定目录并可重命名文件,指定的目录不存在的会自动创建,拷贝文件只能一个个调用
define product_copy_files
$(shell mkdir -p out/target/product/$(TT_PLATFORM)/$(2) ; \
cp -f $(1) out/target/product/$(TT_PLATFORM)/$(2)/$(3) ;)
endef
#拷贝文件到指定目录,不改变原来文件名称,可批量拷贝
define copy_libs_to_system
$(shell mkdir -p out/target/product/$(TT_PLATFORM)/$(2) ; \
cp -rf $(1) out/target/product/$(TT_PLATFORM)/$(2)/ ;)
endef
//使用 demo.mk
$(call xy_product_copy_files,vendor/mediatek/proprietary/packages/demo/text/text.apk,system/app/text,text.apk)
copy so
Android mk文件拷贝第三方库到系统编译目录
Android 不同版本通过mk拷贝并安装APK
PRODUCT_COPY_FILES拷贝文件或文件夹
android 11去除多余APP函数
第一步
\build\make\core 文件夹下 product.mk 新增命令:
# move unnecessary apps
_product_list_vars += PRODUCT_DEL_PACKAGES
--- a/build/make/core/main.mk
+++ b/build/make/core/main.mk
@@ -1269,6 +1269,7 @@ define product-installed-files
$(eval ### Filter out the overridden packages and executables before doing expansion) \
$(eval _pif_overrides := $(call module-overrides,$(_pif_modules))) \
$(eval _pif_modules := $(filter-out $(_pif_overrides), $(_pif_modules))) \
+ $(eval _pif_modules := $(filter-out $(PRODUCT_DEL_PACKAGES), $(_pif_modules))) \
$(eval ### Resolve the :32 :64 module name) \
\build\make\core 文件夹下main.mk ,仿写过滤
第三步:
调用该函数
在base.mk文件内
参考网址:base
专家
Android13 系统裁剪
Android R 替换低版本webView
国外的一些apk一般都需要用到webView来显示界面,如果当前设备的webView版本过低,
可以会出现进入app,显示空白或者直接闪退,卡死等情况.
如何升级系统内的webView?
1.替换系统内预置的webView,换成高版本
2.客户需要使用什么版本的WebView,自行下载然后固件将客户下载的版本作为默认版本
A.替换
+++ b/device/rockchip/rk356x/device.mk
+# deletes unnecessary APKs 先删除系统原来的webview
+PRODUCT_DEL_PACKAGES += \
+ webview \
+
+# update webview.apk 再将新版本的webView copy 进入 system/app/
+PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,vendor/xx/apps/googlewebView/*,$(TARGET_COPY_OUT_SYSTEM)/app)
//更换默认读取webView的方式,默认用com.google.android.webview
+++ b/frameworks/base/core/res/res/xml/config_webview_packages.xml
@@ -16,6 +16,6 @@
<webviewproviders>
<!-- The default WebView implementation -->
- <webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true">
+ <webviewprovider description="Android WebView" packageName="com.google.android.webview" availableByDefault="true">
</webviewprovider>
B.客户需要使用什么版本的WebView,自己下载
WebView update demo
分类:
Android
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库