您的位置:首页 > 运维架构 > Shell

user 版本 在system/bin/目录创建 shell命令 Android.mk

2014-09-15 19:07 555 查看
#

# holo daemon

#

ifneq (,$(filter yes, $(MTK_IPO_SUPPORT) $(MTK_KERNEL_POWER_OFF_CHARGING)))

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:= holo.c

ifeq ($(MTK_TB_WIFI_3G_MODE), WIFI_ONLY)

LOCAL_CFLAGS += -DMTK_TB_WIFI_ONLY

endif

ifeq ($(strip $(MTK_IPO_MDRST_SUPPORT)),yes)

#$(warning reset_modem = 1)
LOCAL_CFLAGS += -DMTK_RESET_MODEM=1

else

#$(warning reset_modem = 0)
LOCAL_CFLAGS += -DMTK_RESET_MODEM=0

endif

ifeq ($(MTK_KERNEL_POWER_OFF_CHARGING), yes)

LOCAL_CFLAGS += -DMTK_KERNEL_POWER_OFF_CHARGING

endif

ifeq ($(MTK_IPOH_SUPPORT), yes)

LOCAL_CFLAGS += -DMTK_IPOH_SUPPORT

endif

ifneq ($(MTK_TABLET_HARDWARE), )

LOCAL_CFLAGS += -DMTK_TABLET_HARDWARE

endif

LOCAL_C_INCLUDES += $(MTK_PATH_SOURCE)/kernel/drivers/video/

LOCAL_C_INCLUDES += $(MTK_PATH_CUSTOM)/lk/include/target

LOCAL_C_INCLUDES += $(MTK_PATH_CUSTOM)/kernel/dct/

LOCAL_C_INCLUDES += $(MTK_PATH_PLATFORM)/lk/include/target

LOCAL_C_INCLUDES += $(LOCAL_PATH)/include

LOCAL_C_INCLUDES += $(TOP)/external/zlib/

LOCAL_MODULE:= holo

LOCAL_SHARED_LIBRARIES := libcutils libutils libc libstdc++ libz libdl liblog libgui libui

LOCAL_MODULE_TAGS := optional

#eng optional

LOCAL_PRELINK_MODULE := false

include $(BUILD_EXECUTABLE)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_PATH := $(TARGET_OUT) 

endif

3. 然后将'test'添加到alps/build/target/product/common.mk里的PRODUCT_PACKAGES(这一步的目的是保证编译到android):

PRODUCT_PACKAGES := \

 ...... \

 test

[FAQ09792] 如何将源代码编译后的文件(lib库/bin/jar/apk等)编译到android中
Platform:MT6572MT6582MT6588MT6589...



Branch:GB3JB2JB3JB5...



FAQ Content

[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_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)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐