如何把应用程序app编译进android系统
2015-09-21 14:42
441 查看
转载:
http://ywxiao66.blog.163.com/blog/static/175482055201152710441106/
------------------------------------------------------------------
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;
1.\build\target\product 目录下generic.mk文件:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/fb99f73d0404f75edc8d167622f12f8f.png)
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文件。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/fb99f73d0404f75edc8d167622f12f8f.png)
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.J***A_LIBRARIES.libarity already defined by ... stop
由于 LOCAL_STATIC_J***A_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包,并删除
http://ywxiao66.blog.163.com/blog/static/175482055201152710441106/
------------------------------------------------------------------
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;
1.\build\target\product 目录下generic.mk文件:
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/fb99f73d0404f75edc8d167622f12f8f.png)
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文件。
Java代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/19/fb99f73d0404f75edc8d167622f12f8f.png)
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.J***A_LIBRARIES.libarity already defined by ... stop
由于 LOCAL_STATIC_J***A_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包,并删除
相关文章推荐
- Apple Instruments
- Android自定义对话框(Dialog)位置,大小
- 如何实现iOS图书动画:第1部分(下)
- 关于android:focusable属性 - daishuguang
- iOS学习-压缩图片(改变图片的宽高)
- iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64
- Android Activity之间切换出现短暂黑屏的处理方法
- IOS图片缓存
- 如何在App中实现朋友圈功能之四在朋友圈中添加发送图片功能——箭扣科技Arrownock
- 如何实现iOS图书动画:第1部分(上)
- 关于页面跳转过程中出现两个界面view出现重叠的处理
- 如何在App中实现朋友圈功能之三快速实现双向好友功能——箭扣科技Arrownock
- iOS Xcode: linker command failed with exit code 1 (use -v to see invocation) 处理方法
- Unity3D实现动态加载游戏资源
- ios开发日记11 对tableView三种计算动态行高方法的分析
- android 之 下载管理器 无论监测在当地的设计思路
- BaseAbsActivity的使用
- Android开发之利用XMPP协议实现消息的即时推送
- android webview goBack()之后 getUrl()无效问题
- 自定义iOS的Back按钮(backBarButtonItem)和pop交互手势(interactivepopgesturerecognizer)