Android系统集成第三方pre-build库和程序(转)
2014-09-09 16:39
656 查看
Android系统集成第三方pre-build库和程序(转)
(2013-08-20 16:04:34)转载▼
标签:
| 分类: android |
1、集成静态库
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
LOCAL_PREBUILT_LIBS := libA.a /
libB.a
LOCAL_STATIC_LIBRARIES := libA /
libB
include $(BUILD_MULTI_PREBUILT)
2、集成动态库
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
LOCAL_PREBUILT_LIBS := libA.so
libB.so
include $(BUILD_MULTI_PREBUILT)
3、集成可执行程序
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
LOCAL_SRC_FILES := hellovprc.elf
LOCAL_MODULE := hellovprc.elf
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := debug
include $(BUILD_PREBUILT)
4、集成pre-build Android应用程序(APK)
如何集成没有源码的apk文件,纯粹的apk呢?方法一、目录结构vendor/BM/APPs/MobileQQ2011/MobileQQ2011.apk
vendor/BM/APPs/MobileQQ2011/Android.mk
以下是Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed.
LOCAL_MODULE := MobileQQ2011
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
# LOCAL_MODULE_TAGS := user
#add by yue @20110516
#you can choose apk's diff location
# LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
LOCAL_CERTIFICATE := platform
#end
include $(BUILD_PREBUILT)
加进去后,在根目录下执行:make即可,
可以在installed-files.txt中查看是否加入到了对应的img文件中。
弊端是如果加入很多apk,要逐个建立这样的目录结构,也因为有android.mk,会产生相应的临时文件
方法二、纯粹拷贝apk文件
目录结构vendor/BM/APPs/MobileQQ2011.apk
vendor/BM/APPs/Renren_Android_3.0.2.apk
通过android提供的PRODUCT_COPY_FILES这个变量来自动拷贝,只需要给此变量赋值。在任何一个确定加入编译的mk文件中加入(我的是加在msm7627_qrd.mk)
PRODUCT_COPY_FILES += /
vendor/bm/APPS/MobileQQ2011.apk:system/app/MobileQQ2011.apk/
vendor/bm/APPS/Renren_Android_3.0.2.apk:system/app/Renren_Android_3.0.2.apk
这种相对不会很繁琐,不需要一级级的建立目录,在内置很多apk是比较方便。
附加说明:
关于android.mk中的LOCAL_OVERRIDES_PACKAGES需要说明一下,此变量可以使其他的模块不加入编译,如源码中DeskClock的android.mk有
LOCAL_OVERRIDES_PACKAGES := AlarmClock
使 AlarmClock不会加入到编译系统中,不会生成 AlarmClock.apk。
原先我是死活不明白会什么有两个闹钟 AlarmClock和 DeskClock ,源码几乎相同,原先只在 AlarmClock中的文件中修改,就是没有效果,测试说没有修改,原来发布的版本中只有DeckClock.apk,我却在本地make AlarmClock编译出了AlarmClock.apk,>_
试了一下在 DeskClock的android.mk中加入LOCAL_OVERRIDES_PACKAGES := Calendar,删掉 Calendar.apk, 然后全部make一下,在system/app下calendar.apk竟然没再生成了????!!!
# Some packages may override others using LOCAL_OVERRIDES_PACKAGES.
# Filter out (do not install) any overridden packages.
overridden_packages := $(call get-package-overrides,$(modules_to_install))
ifdef overridden_packages
# old_modules_to_install := $(modules_to_install)
modules_to_install := /
$(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), /
$(modules_to_install))
endif
其他参考:
1.对Android.mk文件中变量做了详细说明 http://www.cnblogs.com/leaven/archive/2011/03/30/1999350.html 2. Android.mk文件语法规范 http://apps.hi.baidu.com/share/detail/15447104
相关文章推荐
- Android系统集成第三方pre-build库和程序
- Android系统集成第三方pre-build库和程序
- Android系统集成第三方pre-build库和程序
- Android系统集成第三方pre-build库和程序(转)
- Android系统集成第三方pre-build库和程序
- Android系统集成第三方pre-build库和程序
- Android系统集成有源码的第三方库和程序
- Android系统集成有源码的第三方库和程序
- Android 快速调用系统自带程序发送彩信实现
- ant编译android程序时报错,build.xml:49: taskdef class com.android.ant.SetupTask cannot be found
- 让Python在Android系统上飞一会儿:第三节 在电脑上编写程序在手机上运行
- Android 中Intent调用系统程序总结
- 使用Android系统隐藏api 读取*.apk 程序安装包信息[转]
- Android 程序 随系统启动
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
- Android中级篇之区分系统程序和安装程序
- 构建Android自动编译持续集成系统
- android 的各种调用系统程序
- Android系统源码编译全过程—— Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2