Android系統應用導入Eclipse中開發
最近開發中需要将android的一些自帶的系統級應用導入eclipse中,但是系統級的apk導入eclipse中會發現很多錯誤,下面我就介紹下我是如何成功導入的過程和一些應該注意的細節
1.我用的android sdk的target-19 4.4的版本 ,而使用的android源代碼也是android4.4.2 ,這個最好能保持相同,實在不行也最好是sdk的版本高于源碼的版本,這樣可以減少eclipse中代碼的錯誤數量,不會那麼打擊新程式員的信心。下面我以一個執行個體具體講述。Dialer 是android系統中打電話撥号的應用。首先你在系統的建立一個android工程,但在建立過程中要注意建立的包名要和源碼中Dialer AndroidManifest.xml檔案中定義的包名一緻,這樣可以避免很多錯誤,工程建好之後,把源碼Dialer中的AndroidManifest.xml ,res目錄下 ,src目錄的 ,的檔案全部替換eclipse中對應的檔案或相同目錄下的檔案,這時你會發現有很多錯誤。
2.有錯誤沒關系,這時我們需要去看一個源碼中比較關鍵的一個檔案Android.mk ,源碼編譯系統的所有的apk都是根據這個檔案的編譯的,先讓我們來看看Dialer中的這個檔案
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
contacts_common_dir := ../ContactsCommon
incallui_dir := ../InCallUI
src_dirs := src $(contacts_common_dir)/src $(incallui_dir)/src
res_dirs := res $(contacts_common_dir)/res $(incallui_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 \
--extra-packages com.android.incallui
LOCAL_JAVA_LIBRARIES := telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := \
com.android.phone.shared \
com.android.services.telephony.common \
com.android.vcard \
android-common \
guava \
android-support-v13 \
android-support-v4 \
android-ex-variablespeed \
LOCAL_REQUIRED_MODULES := libvariablespeed
LOCAL_PACKAGE_NAME := Dialer
LOCAL_CERTIFICATE := shared
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PROGUARD_FLAG_FILES := proguard.flags $(incallui_dir)/proguard.flags
include $(BUILD_PACKAGE)
# Use the following include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
導入eclipse中的源代碼可能有些是資源檔案中某某資源找不到或者代碼中的類沒有,這沒事。看上面的編譯腳本,LOCAL_SRC_FILES指定編譯代碼的路徑,LOCAL_RESOURCE_DIR制定所需資源的路徑,
代碼路徑:
src_dirs := src $(contacts_common_dir)/src $(incallui_dir)/src
資源路徑:
res_dirs := res $(contacts_common_dir)/res $(incallui_dir)/res