Android.mk编译.apk .so .jar .a第三方.apk .so .jar .a的方法

一、编译一个简单的APK

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java subdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackage# Tell it to build an APKinclude $(BUILD_PACKAGE)

二、编译一个依赖静态.jar文件的APK

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# List of static libraries to include in the packageLOCAL_STATIC_JAVA_LIBRARIES := static-library# Build all java files in the java subdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackage# Tell it to build an APKinclude $(BUILD_PACKAGE)注:LOCAL_STATIC_JAVA_LIBRARIES 后面应是你的APK程序所需要的JAVA库的JAR文件名。

三、编译一个需要platform key签名的APK

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java subdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackageLOCAL_CERTIFICATE := platform# Tell it to build an APKinclude $(BUILD_PACKAGE)注:LOCAL_CERTIFICATE 后面应该是签名文件的文件名

四、编译一个需要特殊vendor key签名的APK

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java subdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Name of the APK to buildLOCAL_PACKAGE_NAME := LocalPackageLOCAL_CERTIFICATE := vendor/example/certs/app# Tell it to build an APKinclude $(BUILD_PACKAGE)

五、装载一个普通的第三方APK

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Module name should match apk name to be installed.LOCAL_MODULE := LocalModuleNameLOCAL_SRC_FILES := $(LOCAL_MODULE).apkLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := platforminclude $(BUILD_PREBUILT)

六、装载需要.so(动态库)的第三方apk

LOCAL_PATH := $(my-dir)include $(CLEAR_VARS)LOCAL_MODULE := baiduinput_android_v1.1_1000eLOCAL_SRC_FILES := $(LOCAL_MODULE).apkLOCAL_MODULE_CLASS := APPSLOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_CERTIFICATE := platforminclude $(BUILD_PREBUILT)

######################################################################## copy the library to /system/lib ##########################################################################################include $(CLEAR_VARS)LOCAL_MODULE := libinputcore.soLOCAL_MODULE_CLASS := SHARED_LIBRARIESLOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)LOCAL_SRC_FILES := lib/$(LOCAL_MODULE)OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)include $(BUILD_PREBUILT)

七、编译一个静态java库

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Build all java files in the java subdirectoryLOCAL_SRC_FILES := $(call all-subdir-java-files)# Any libraries that this library depends onLOCAL_JAVA_LIBRARIES := android.test.runner# The name of the jar file to createLOCAL_MODULE := sample# Build a static jar file.include $(BUILD_STATIC_JAVA_LIBRARY)注:LOCAL_JAVA_LIBRARIES表示生成的java库的jar文件名。

来源:

include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jarinclude $(BUILD_MULTI_PREBUILT)

下面的代码可以加到任一个文件中:添加共享库:LOCAL_MODULE := libffmpeg #库的名字LOCAL_MODULE_TAGS := optional #系统内有效,你可以试一下不加这一行就可以看到出错提示信息。LOCAL_PREBUILT_LIBS := libffmpeg.so #库的路径。include $(BUILD_MULTI_PREBUILT) #这行比较重要是实际做事的地方。参考此文:添加第三方库到Android源码中

添加静态库:include $(CLEAR_VARS)LOCAL_MODULE := libavcodecLOCAL_PREBUILT_LIBS := libavcodec.aLOCAL_MODULE_TAGS := optionalinclude $(BUILD_MULTI_PREBUILT)

静态库和动态库是对应的,静态库是在链接时使用,动态库是在运行时使用,使用方法:

在要用到对应库的模块的Android.mk文件中加入类似于下面的内容:

静态库(链接时用,它会被复制到out/target/product/generic/obj/STATIC_LIBRARIES/libavcodec_intermediates/目录下):

LOCAL_WHOLE_STATIC_LIBRARIES += \ libavcodec #这个是模块名(LOCAL_MODULE)动态库(运行时用,,它会被复制到/system/lib/目录下。):LOCAL_SHARED_LIBRARIES += \ libffmpeg

include $(call all-makefiles-under,$(LOCAL_PATH)) #这句上调用子目录下的很有Android.mk

来源:

LOCAL_STATIC_JAVA_LIBRARIES := ta

include $(CLEAR_VARS)LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := ta:libs/TA4AIDL.jarinclude $(BUILD_MULTI_PREBUILT)

可是我要如何在浅薄的纸上为你画上我所有的命轮?

Android.mk编译.apk .so .jar .a第三方.apk .so .jar .a的方法

相关文章:

你感兴趣的文章:

标签云: