android7.0 SystemUI编译过程中遇到的问题

来源:互联网 发布:华盛顿大学网络课程 编辑:程序博客网 时间:2024/05/21 23:32

先说下,我遇到的问题:我要修改Keyguard锁屏界面,改好了编译,看不出效果后来检查了下SystemUI的Android.mk

看一下Android.mk 的源码


1 LOCAL_PATH:= $(call my-dir)
  2
  3 include $(CLEAR_VARS)
  4
  5 LOCAL_MODULE := SystemUI-proto-tags
  6
  7 LOCAL_SRC_FILES := $(call all-proto-files-under,src) \
  8     src/com/android/systemui/EventLogTags.logtags
  9
 10 LOCAL_PROTOC_OPTIMIZE_TYPE := nano
 11 LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors
 12
 13 include $(BUILD_STATIC_JAVA_LIBRARY)
 14
 15 # ------------------
 16
 17 include $(CLEAR_VARS)
 18
 19 LOCAL_MODULE_TAGS := optional
 20
 21 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
 22
 23 LOCAL_STATIC_JAVA_LIBRARIES := \
 24     Keyguard \
 25     android-support-v7-recyclerview \
 26     android-support-v7-preference \
 27     android-support-v7-appcompat \
 28     android-support-v14-preference \
 29     android-support-v17-leanback \
 30     framework-protos \
 31     SystemUI-proto-tags
 32
 33 LOCAL_JAVA_LIBRARIES := telephony-common telephony-ext
 34
 35 LOCAL_PACKAGE_NAME := SystemUI
 36 LOCAL_CERTIFICATE := platform
 37 LOCAL_PRIVILEGED_MODULE := true
 38
 39 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 40
 41 LOCAL_RESOURCE_DIR := \
 42     frameworks/base/packages/Keyguard/res \
 43     $(LOCAL_PATH)/res \
 44     frameworks/support/v7/preference/res \
 45     frameworks/support/v14/preference/res \
 46     frameworks/support/v7/appcompat/res \
 47     frameworks/support/v7/recyclerview/res \
 48     frameworks/support/v17/leanback/res
 49
 50 LOCAL_AAPT_FLAGS := --auto-add-overlay \
 51     --extra-packages com.android.keyguard:android.support.v7.recyclerview:android.support.v7.preference:android.support.v14.preference:android.support.v7.appcompat \
 52     --extra-packages android.support.v17.leanback
 53
 54 ifneq ($(SYSTEM_UI_INCREMENTAL_BUILDS),)
 55     LOCAL_PROGUARD_ENABLED := disabled
 56     LOCAL_JACK_ENABLED := incremental
 57 endif
 58
 59 include frameworks/base/packages/SettingsLib/common.mk
 60
 61 include $(BUILD_PACKAGE)
 62
 63 ifeq ($(EXCLUDE_SYSTEMUI_TESTS),)
 64     include $(call all-makefiles-under,$(LOCAL_PATH))
 65 endif

可以看到在编译SystemUI的时候,需要用到Keyguard的java静态库 LOCAL_STATIC_JAVA_LIBRARIES := \ Keyguard \

然后我跑到Keyguard的目录下mm,这个时候,我发现编译的时候会生成库文件

out/target/common/obj/JAVA_LIBRARIES/Keyguard_intermediates/classes.jack

out/target/product/msm8937_64/obj/JAVA_LIBRARIES/Keyguard_intermediates/classes.jack

然后我把这两个文件删除掉,去编译SystemUI,会报下面的错误:error: 'out/target/common/obj/JAVA_LIBRARIES/Keyguard_intermediates/classes.jack', needed by 'out/target/common/obj/APPS/SystemUI_intermediates/with-local/classes.dex', missing and no known rule to make it

很明显,是缺少java库文件。

总结,在编译SystemUI的时候,必须包含Keyguard的java静态库,才能编译成功,Keyguard中修改的内容,要重新编译生成新的静态库文件,再去编译SystemUI,修改的内容才能生效。