[DESCRIPTION]
某些自己写的代码不希望跟随codebase释放出去,也可以将编译之后的文件放在codebase中,编译时一起编译进去的。
[KEYWORD]
lib
bin
apk
编译
[SOLUTION]
(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)
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_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)
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)
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)
相关推荐
Android codebase 都很大,编译一次都需要花很多时间,如果是preloader/lk/bootimage 还好, 但是Android 的话都是非常久。 实际上这个编译时间还是可以进一步缩短!
安卓开发之提升构建速度,加快安卓编译速度的若干方法.zip android app开发之提升build速度,加快android编译速度的若干方法.zip
在Android开发过程中,经常遇到的一个问题就是编译速度过慢,这不仅降低了开发效率,还可能影响到团队的合作进度。本文将详细介绍如何通过配置Gradle来优化Android Studio的编译速度,帮助开发者提高工作效率。 ###...
优化编译器设置可以显著提升编译速度。例如,使用 `-O2` 或 `-O3` 选项可以开启编译器的优化级别,以生成更高效的代码,虽然这可能会增加编译时间。同时,开启 `-fwhole-program` 或 `-flto`(链接时优化)可以在...
为了解决这个问题,我们可以采取一些优化措施来提升Android Studio的编译速度。 首先,描述中提到的`gradle.properties`文件是一个关键的角色。这个文件通常位于项目的根目录下,用于存储Gradle构建的配置属性。...
libyuv库的高效性能使得它在处理YUV数据时,能够显著提升应用程序的运行速度和响应性。 1. **libyuv简介** - libyuv是一个跨平台的库,支持多种处理器架构,包括ARM和Intel等。 - 主要功能是进行YUV与RGB之间的...
标签解释:android, gradle, 优化, gradle 提升编译速度 知识点总结: 1. 配置相关设置提升编译速度:在build.gradle文件中,如果设置了很多渠道,在编译时会影响编译速度,尤其是在Windows系统下运行。可以通过...
其中`-j4`表示同时使用4个CPU核心进行编译,可以提高编译速度。 **注意事项**: - 在编译前确保所有依赖项都已正确安装。 - 编译过程可能会比较耗时,具体时间取决于硬件性能。 - 如果遇到编译错误,需要根据错误...
**正文** x264是开源的H.264视频编码库,广泛应用于各种多媒体项目,包括Android平台。在Android开发中,如果你需要处理视频编码或解码,x264库是...通过合理的集成和使用,可以显著提升Android应用的多媒体处理性能。
这个"APKTOOL_最新官方版_反编译速度快"的版本表明它是最新的,可能包含了性能优化,提升了反编译速度,使得开发者可以更高效地分析和修改Android应用程序。 APK文件是Android系统中应用程序的安装包,包含了应用的...
最后,运行"make -jX"进行编译,这里的X代表你想使用的CPU核心数,以加快编译速度。 制作镜像的环节,主要是通过shell脚本来自动化完成一系列步骤。这包括但不限于生成设备树(device tree)、打包kernel、构建RIL...
### Android模块化编译速度解决方案 #### 概述 在Android开发过程中,随着应用功能的增加,项目的规模逐渐增大,导致编译时间显著延长。为了提高开发效率、降低编译时间,采用模块化的开发方式是一种有效的方法。...
本篇文章将详细讲解Android编译的过程,包括关键步骤、工具和概念,旨在帮助开发者深入理解Android编译系统,提高开发效率。 首先,Android的编译过程主要包括四个主要阶段:预处理(Preprocessing)、编译...
- 使用`$ make -j4`(这里的数字根据CPU核心数调整)启动编译过程,-j参数允许并行编译,加快编译速度。 - 编译过程可能会遇到各种错误,这通常需要针对错误信息进行相应的软件包安装或环境调整。 #### 四、总结...
在移动开发领域,Android NDK是一个重要的工具,它允许开发者在Android平台上使用C和C++原生代码,从而提升性能并利用已有的库。在这个“soxr Android ndk编译demo”中,我们将深入探讨如何使用NDK来编译soxr库,一...
- **性能提升:** 量子计算技术的应用能够显著提高Android应用程序的编译速度和编译质量。 - **资源优化:** 通过对编译过程的深度优化,可以减少对硬件资源的需求,使编译过程更加高效。 - **未来展望:** 量子计算...
在Android开发领域,理解系统自带应用的源码是提升技术水平的重要途径。本文将深入剖析Android 2.3.3版本中的图库应用——Gallery3D的源码,帮助开发者了解其工作原理,从而更好地运用到自己的项目中。 Gallery3D是...
Android编译大全是一份深入且全面的资源,涵盖了Android应用程序和系统的整个编译过程。这份资料旨在帮助开发者理解和掌握Android开发中的编译技术,从而优化性能、提高效率并解决可能出现的问题。以下是对Android...
4. **编译过程**:执行`source build/envsetup.sh`初始化环境,然后使用`make -jX`命令进行编译,其中X代表使用的核心数,用于加速编译速度。 5. **编译结果**:编译完成后,你会得到一个包含系统映像的ZIP文件,...