Android 4.0 Android.mk 复制apk的方法
升级到Android 4.0。 原来我们在3.2 版本下面编译的程序有些不能编译通过。特别是
复制apk,复制动态库的Android.mk 文件,经过研究。现解决方法如下。
错误信息:The following variables have been changed: PRODUCT_COPY_FILES. Stop.
解决办法:下面几个例子共参考。分别是复制APK;SO;ZIP; db; jpg
如果有其他更好的办法。请留言。
- LOCAL_PATH:= $(call my-dir)
- ######################################
- #COPY PayMent APK
- include $(CLEAR_VARS)
- LOCAL_MODULE := PayMent
- #输出PayMent.apk 文件的目录
- LOCAL_MODULE_PATH := $(TARGET_OUT)/app/
- LOCAL_SRC_FILES :=../3rd-apk/PayMent/PayMent.apk
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := APPS
- #APPS,JAVA_LIBRARIES,SHARED_LIBRARIES,STATIC_LIBRARIES,EXECUTABLES
- LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_CERTIFICATE:=platform
- LOCAL_SDK_VERSION := current
- include $(BUILD_PREBUILT)
- ######################################
- #COPY SpeechService APK WITH xx.so
- include $(CLEAR_VARS)
- #need modify here
- LOCAL_MODULE := SpeechService
- LOCAL_MODULE_PATH := $(TARGET_OUT)/app/
- LOCAL_SRC_FILES :=../3rd-apk/IFlyService/SpeechService.apk
- #need modify here
- #optional if you have .so;need add COPY so file
- LOCAL_JNI_SHARED_LIBRARIES:=libmsc
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_CERTIFICATE:=platform
- LOCAL_SDK_VERSION := current
- include $(BUILD_PREBUILT)
- ######################################
- #COPY SpeechService so file
- include $(CLEAR_VARS)
- #need modify here
- LOCAL_MODULE := libmsc
- LOCAL_SRC_FILES :=../3rd-apk/IFlyService/libmsc.so
- #need modify here
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := SHARED_LIBRARIES
- LOCAL_MODULE_SUFFIX:=$(HOST_JNILIB_SUFFIX)
- LOCAL_CERTIFICATE:=platform
- LOCAL_PRELINK_MODULE := false
- include $(BUILD_PREBUILT)
- ############################################
- #copy many so files
- #===========================================
- include $(CLEAR_VARS)
- LOCAL_MODULE := BaiduInput_Pad
- LOCAL_MODULE_PATH := $(TARGET_OUT)/app/
- LOCAL_SRC_FILES :=../3rd-apk/BaiduIME/BaiduInput_Pad.apk
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_JNI_SHARED_LIBRARIES:= ../3rd-apk/BaiduIME/libkpenoem_api_so.so \
- ../3rd-apk/BaiduIME/libtmfe30.so \
- ../3rd-apk/BaiduIME/libinputcoreoem-2.so
- LOCAL_CERTIFICATE:=platform
- LOCAL_SDK_VERSION := current
- include $(BUILD_PREBUILT)
- #==========================================
- #make exe file
- include $(CLEAR_VARS)
- LOCAL_SRC_FILES:= xxx.c
- LOCAL_MODULE := TestBusy
- LOCAL_MODULE_TAGS := eng
- LOCAL_STATIC_LIBRARIES := libcutils libc
- #EXTRA_LDLIBS := -lpthread # -lrt
- #EXTRA_CFLAGS := -DRUN_IN_TARGET
- LOCAL_MODULE_CLASS :=EXECUTABLES
- include $(BUILD_EXECUTABLE)
- #==========================================
- #cp zip file; or other txt jpg db files
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := data-bak
- LOCAL_SRC_FILES := data-bak.zip
- LOCAL_MODULE_PATH := $(TARGET_OUT)/../recovery-bak
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := SHARED_LIBRARIES
- LOCAL_MODULE_SUFFIX:= .zip
- #LOCAL_MODULE_SUFFIX:= .txt
- LOCAL_CERTIFICATE:= PRESIGNED
- LOCAL_PRELINK_MODULE := false
- include $(BUILD_PREBUILT)
- LOCAL_PATH:= $(call my-dir)
- #cp .jpg file
- #===========================================
- include $(CLEAR_VARS)
- LOCAL_MODULE := bg
- LOCAL_SRC_FILES := overlay/packages/apps/Settings/res/drawable/bg.jpg
- LOCAL_MODULE_PATH := $(TARGET_OUT)/../data/data/com.lenovo.nebula.settings/files
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := SHARED_LIBRARIES
- LOCAL_MODULE_SUFFIX:= .jpg
- #platform shared media PRESIGNED
- LOCAL_CERTIFICATE:= PRESIGNED
- LOCAL_PRELINK_MODULE := false
- include $(BUILD_PREBUILT)
- #cp .mp4 file
- #===========================================
- include $(CLEAR_VARS)
- LOCAL_MODULE := oobeletvintroduce
- LOCAL_SRC_FILES := packages/apps/OOBE3D/res/drawable/oobeletvintroduce.mp4
- LOCAL_MODULE_PATH := $(TARGET_OUT)/app
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_CLASS := SHARED_LIBRARIES
- LOCAL_MODULE_SUFFIX:= .mp4
- #platform shared media PRESIGNED
- LOCAL_CERTIFICATE:= PRESIGNED
- LOCAL_PRELINK_MODULE := false
- include $(BUILD_PREBUILT)
注意:LOCAL_PATH:= $(call my-dir) 这个变量,在一个Android.MK文件中只能有一个。
多个LOCAL_PATH会出现错误。
而include $(CLEAR_VARS)
和include $(BUILD_PREBUILT)
可以是多个。