首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

怎么把应用程序app编译进android系统

2012-10-05 
如何把应用程序app编译进android系统转载:http://ywxiao66.blog.163.com/blog/static/1754820552011527104

如何把应用程序app编译进android系统
转载:
http://ywxiao66.blog.163.com/blog/static/175482055201152710441106/
------------------------------
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;

1.\build\target\product 目录下generic.mk文件:

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文件。

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAGE_NAME := testMidLOCAL_CERTIFICATE := platforminclude $(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包,并删除

热点排行