`

提升Android编译速度

 
阅读更多
[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)
 
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_PREBUILTPRODUCT_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)
分享到:
评论

相关推荐

    关于提升android编译速度到半小时编译完成

    Android codebase 都很大,编译一次都需要花很多时间,如果是preloader/lk/bootimage 还好, 但是Android 的话都是非常久。 实际上这个编译时间还是可以进一步缩短!

    安卓app开发之提升构建速度,加快安卓编译速度的若干方法.zip

    安卓开发之提升构建速度,加快安卓编译速度的若干方法.zip android app开发之提升build速度,加快android编译速度的若干方法.zip

    优化Gradle提升Gradle编译速度

    今天小编就为大家分享一篇关于优化Gradle提升Gradle编译速度的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Android APK+Dex文件反编译及回编译工具v2.0.2

    更新,XML编辑器(提升速度,修复bug) *.更新,显示APK自身图标(Apkshellext v2.0.1.5780.2290) *.更新,刷机精灵APK安装器 *.新增,自定义默认签名,可用自己制作的签名包签名 *.新增,Keytool签名包制作工具,推荐...

    分享篇 – 基于 Android APP Bundle 开发的全新编译模式 (编译速度提升 70%)

    开发期间的编译速度比较慢; 厂商限制内置包的大小,厂商基础包的改造成本越来越大; 推广转换率下降。 Wafers 项目正是在这个大背景下产生的,整个项目分为 2 个里程碑: 里程碑   进度  基

    反编译软件全套(含步骤).rar

    反编译软件全套(含步骤):内含基本的使用操作步骤,以及配套的代码查看器。现在网上能下载到的Android killer 大多数都会卡死...资源中的这一版Android killer是去卡顿的一版,反编译速度相较与上一版有明显的提升。

    android手机安全卫士

    2.介绍了listview和gridview等控件的优化技巧,提升软件的效率 3.穿插介绍了企业开发中的bug管理,mantis的使用,自动化测试robotium的使用 ,log管理. 软件的打包,混淆,反编译和三方广告的加入等技巧。 该项目主要涵盖...

    gradle-2.4-all

    5月最新的gradle-2.4下载。可提升Android studio的编译速度

    android-x2j::hot_beverage:编写XML,运行Java

    传统的布局加载方案都是在运行时解析XML(通过LayoutInflater),而Android X2J则可以将XML的解析提前到编译时,从而可以让布局加载速度提升200%。 使用方法 配置根目录的build.gradle。 last_version: ...

    详解Android Gradle插件3.0挖坑日记

    为了提升编译速度,这几天用上了 AS 3.0 和 Gradle 3.0 插件,不得不说不论是 AS 3.0,还是 Gradle 3.0 都变化非常大,具体的更新日志参考下官网,其中 Gradle 3.0的配置和可能遇到的问题可以说是非常详细了。...

    xmljava系统源码-android-multi-channel-tool:基于Gradle的易用、快速、稳定的多渠道打包工具

    快速:采用一次编译、多次派生子渠道包的方式,大幅提升打包速度; 稳定:派生子渠道包时,不修改任何已有文件,杜绝基于反编译的多渠道打包方法带来的稳定性问题。 用法 Step 1 添加到工程 buildscript { ...

    Hopper 4.0.8完美版.zip

    2016-12-02 更新1.1.0 -- 优化分析速度~~大幅度提升!! 如果你没有IDA Pro 6.95 那么Hopper Disassembler v4是你的最佳选择 著名的跨平台反编译工具 能够反汇编32/64位Mac,Linux,Windows和iOS可执行文件。 V4...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    U 优化 再次打开项目时的首次编译速度 U 优化 GPU 加速默认打开 U 优化 增加 navigationBarBackgroundColor 是否为合法颜色值的监测提示 U 优化 只有未授权时直接调用 wx.getUserInfo 才会出现升级提示 U 优化 ...

    chrome.exe

    本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)...

    Java版的Ruby解释器 JRuby简介

    另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器应用的领先平台。不过如果Java平台不与Ruby等新兴语言联系在一 起,就有可能落后于流行趋势。...

Global site tag (gtag.js) - Google Analytics