如何将源代码编译后的文件(lib库/bin/jar/apk等)编译到android中
来源:互联网 发布:淘宝一心店铺出售 编辑:程序博客网 时间:2024/04/30 01:27
某些自己写的代码不希望跟随codebase释放出去,也可以将编译之后的文件放在codebase中,编译时一起编译进去的。
(1):加入你的代码放在alps/test目录下,里面有test.c和Android.mk,编译为test的可执行文件。
1. 请先编译一遍,生成test文件,将out/target/product/$proj/system/bin/test文件放到alps/test/目录下, 此时可以拿掉test.c和Android.mk
2. 重新创建一个Android.mk,编写如下:
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_EXECUTABLES += test
include $(BUILD_MULTI_PREBUILT)
3. 然后将'test'添加到alps/build/target/product/common.mk里的PRODUCT_PACKAGES(这一步的目的是保证编译到android): PRODUCT_PACKAGES := \ ...... \ test ============================
(2):以上是将可执行文件编译到android,如果要将*.so,*.a, *.jar放进去,可以将 LOCAL_PREBUILT_EXECUTABLES += test 替换为: *.so或*.a是: LOCAL_PREBUILT_LIBS += 1.so 2.so 3.a #还可以一次性加多个同类型的文件,这样的话, 第3步就得将‘1’,‘2’,‘3’全部加入PRODUCT_PACKAGES *.jar是: LOCAL_PREBUILT_JAVA_LIBRARIES += 1.jar 2.jar 如果是静态的*.jar,则是: LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += 1.jar 2.jar --------------------------- 稍微复杂的写法是:可以将以上放在一起,例子如下:
Android.mk:
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_EXECUTABLES += a b c
LOCAL_PREBUILT_LIBS += d.so e.a
LOCAL_PREBUILT_JAVA_LIBRARIES += f.jar
LOCAL_STRIP_MODULE := true
#这个表示是否要移除调试信息,只对可执行文件、lib库有效 include $(BUILD_MULTI_PREBUILT) 然后将'a', 'b', 'c', 'd', 'e', 'f'加入到PRODUCT_PACKAGES中。 ============================
(3)添加apk就不能这样做了,必须使用BUILD_PREBUILT, 可支持签名:LOCAL_CERTIFICATE,如果为PRESIGNED则不签,支持zipalign。 比如要添加a.apk,Android.mk: #include $(CLEAR_VARS) LOCAL_MODULE := a LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := APPS LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_CERTIFICATE := PRESIGNED #不做签名 LOCAL_MODULE_PATH := $(TARGET_OUT)/app #放到system/app目录下 include $(BUILD_PREBUILT) 然后将a加入PRODUCT_PACKAGES ============================
(4)其他文件可以用BUILD_PREBUILT或PRODUCT_COPY_FILES,区别在于PRODUCT_COPY_FILES不能用mm命令编译, 只能用remake android编译,但是PRODUCT_COPY_FILES写法很简单: PRODUCT_COPY_FILES += $(LOCAL_PATH)/test:test 表示将test复制到$(PRODUCT_OUT)下,并且命名为test。这里的test可以替换为任意文件 用BUILD_PREBUILT的Android.mk如下:
#include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT)
#存放的位置$(TARGET_OUT)表示是system/,还可以使用$(TARGET_OUT_*)的宏, 具体定义在alps/build/core/envsetup.mk include $(BUILD_PREBUILT)
- 如何将源代码编译后的文件(lib库/bin/jar/apk等)编译到android中
- Android如何预置apk,jar,lib等任意文件到系统中
- android 如何内置/预置/预编译文件(执行程序,应用程序,apk, jar, lib 等任意文件)到系统中
- 如何将apk文件编译到android镜像中
- Android 源码编译:资源树下,将drawable-*等文件编译到.apk里
- 如何将一个已经编译好的service的bin档/jar文件编译进system/bin目录下
- Android 系统apk编译源代码的时候如何引用android-support-v4.jar 在Android.mk
- android sdk 编译--如何将源代码加入android.jar
- android学习第七讲:学习Android.mk编译jar包,如何编译APK,APK中如何导入jar包和库文件,如何在Android.mk中添加判断语句
- NDK编译后的文件如何加载到Android项目
- android将文件编译到文件系统中
- android将文件编译到文件系统中
- Android将第三方apk文件编译生成到system.img中
- android编译时如何决定一个APK等Module是否被自动编译到system.img中
- Android ANT 如何编译Jar 和 APK
- 将编译后的class文件打成jar包
- Android中.apk文件的编译流程
- Android中.apk文件的编译流程
- 通过直方图比较图像相似度
- 【DRP】Oracle10g错误—java.lang.Exception:Exception in sending Request::null
- HDU 4417-Super Mario(划分树-二分查找)
- Hadoop集群WordCount详解(二)
- 2016sdau课程练习专题三 1010
- 如何将源代码编译后的文件(lib库/bin/jar/apk等)编译到android中
- 【Android Native Code开发系列】 五 运行、调试编译的Native Code项目
- AndroidImageSlider超炫的轮播图效果
- HashMap的实现原理
- constexpr 和 inline
- 介绍const
- 毛刺修剪
- Java线程详解
- 巴什博弈