Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android4.4 Makefile屬性:LOCAL_AAPT_FLAGS的使用

Android4.4 Makefile屬性:LOCAL_AAPT_FLAGS的使用

編輯:關於Android編程

今天改導入/導出聯系人方面的東西,導入/導出聯系人的這個面板是一個DialogFragment,跟了下代碼發現其實現packages/apps/ContactsCommon中,那麼在其中添加了一些Log,進入到packages/apps/ContactsCommon/目錄下,mm,編譯生成了一個com.android.contacts.common.apk,把此程序push到系統中,添加的Log信息卻怎麼也打不出來,開始懷疑是不是弄錯了,並不是這個地方實現的(Android源碼中還是有一些重復的代碼的),於是又整個工程搜索了一遍,那個導入/導出聯系人的DialogFragment只在這裡定義了,於是就郁悶了。。。在Android.mk中也看不出什麼問題:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, res)

LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := \
com.android.phone.shared \
com.android.vcard \
guava \
android-common \
android-support-v13 \
android-support-v4 \

LOCAL_PACKAGE_NAME := com.android.contacts.common

LOCAL_PROGUARD_ENABLED := disabled
LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

=========================================================================

後來搜索了一下com.android.contacts.common,發現在packages/apps/Dialer和packages/apps/Contacts中都有引用,

Contacts的Android.mk文件:

 

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

contacts_common_dir := ../ContactsCommon

src_dirs := src $(contacts_common_dir)/src
res_dirs := res $(contacts_common_dir)/res

LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))

LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages com.android.contacts.common

LOCAL_JAVA_LIBRARIES := telephony-common voip-common
LOCAL_STATIC_JAVA_LIBRARIES := \
com.android.phone.shared \
com.android.vcard \
android-common \
guava \
android-support-v13 \
android-support-v4 \
android-ex-variablespeed \

LOCAL_REQUIRED_MODULES := libvariablespeed
LOCAL_PACKAGE_NAME := Contacts
LOCAL_CERTIFICATE := shared
LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

=================================================================

 

其中有這一段:

LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages com.android.contacts.common

而且在Contacts的AndroidManifest.xml中也注冊了很多ContactsCommon中的類,於是我想ContactsCommon是通過這種方式集成到Contacts這個程序中去了,編譯了一下Contacts,push進系統,發現Log果然可以出來了。

 

在Android系統中,撥號程序(packages/apps/Dialer)和聯系人程序(packages/apps/Contacts)之間的耦合性非常的大,在撥號中可以調取聯系人信息,在聯系人中可以進入到撥號界面(當然,還有一個短信程序也是互相聯通的),所以我覺得,為了更好的使這些程序誇進程訪問,就引出來了這個ContactsCommon的程序(Android4.3之前是沒有這個東西的),相當於一個中間人吧。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved