一、编译一个简单的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)
可是我要如何在浅薄的纸上为你画上我所有的命轮?