天天看點

如何把應用程式app編譯進android系統

把常用的應用程式編譯到img檔案中,就成了系統的一部分,使用者不必自己安裝,當然也解除安裝不了; 

同時也可以删減系統自帶的應用程式,精簡系統; 

1.\build\target\product 目錄下generic.mk檔案: 

java代碼  

如何把應用程式app編譯進android系統

product_packages := \  

    accountandsyncsettings \  

    deskclock \  

    alarmprovider \  

    bluetooth \  

    calculator \  

    calendar \  

    camera \  

    testmid \  

    certinstaller \  

    drmprovider \  

    email \  

    gallery3d \  

    latinime \  

    launcher2 \  

    mms \  

    music \  

我們添加一個testmid \ 應用名稱。 

2.把testmid包放入 

\packages\apps 目錄下,修改android.mk檔案。 

如何把應用程式app編譯進android系統

local_path:= $(call my-dir)  

include $(clear_vars)  

local_module_tags := optional  

local_src_files := $(call all-subdir-java-files)  

local_package_name := testmid  

local_certificate := platform  

include $(build_package)  

注:local_package_name := testmid (包名必須和generic.mk中添加的相同) 

編譯源碼,可以看到在 

\out\target\product\smdkv210\system\app 

目錄下生存了testmid.apk了。這時system.img也包含了此應用。 

------------------------------------------------------------------- 

特殊情況:有時,應用需要包含jar包,這時的app導入源碼時會出現問題: 

module.target.java_libraries.libarity already defined by ... stop 

由于 local_static_java_libraries := libarity  會引發錯誤資訊。 

目前解決方法是: 

\build\core 目錄下修改base_rules.mk 

注釋掉錯誤資訊: 

ifdef $(module_id) 

#$(error $(local_path): $(module_id) already defined by $($(module_id))) 

endif 

$(module_id) := $(local_path) 

--重新編譯,這時可以通過了。 

  (2)、删除原廠(telchips)帶源碼的應用程式,如dtv_dvbt 

  在/device/telechips/m801/device.mk 

  注釋掉相應語句: 

  # product_packages += \ 

  #    sampledvbtplayer \ 

  同時,在/out/target/product/m801/system/app 找到相應的.apk包,并删除 

繼續閱讀