Android系统——AOSP相关-->随记
杂记
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)
方法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 系统裁剪