原文链接:https://www.jianshu.com/p/7d10f57ccc66


    1.framework引入静态jar包

    1. include $(CLEAR_VARS)
    2. LOCAL_MODULE = xxx
    3. LOCAL_MODULE_CLASS = JAVA_LIBRARIES
    4. LOCAL_MODULE_SUFFIX = .jar
    5. LOCAL_UNINSTALLABLE_MODULE = true
    6. LOCAL_SRC_FILES = lib/xxx.jar
    7. include $(BUILD_PREBUILT)
    8. 在需要引入的地方,比如framework.jar
    9. 在其对应的Android.mk中添加:
    10. LOCAL_STATIC_JAVA_LIBRARIES += xxx

    2.编译共享jar包

    1. include $(CLEAR_VARS)
    2. LOCAL_MODULE := xxx
    3. LOCAL_MODULE_TAGS := optional
    4. LOCAL_SRC_FILES := \
    5. $(call all-java-files-under,$(ANDROID_API_SUBDIRS)) \
    6. $(call all-Iaidl-files-under,$(ANDROID_API_SUBDIRS))
    7. LOCAL_PROGUARD_ENABLED := disabled
    8. LOCAL_REQUIRED_MODULES := \
    9. xxx.xml
    10. LOCAL_AIDL_INCLUDES := $(ANDROID_JAVA_API_DIRS)
    11. include $(BUILD_JAVA_LIBRARY)
    12. ####instlal permission####
    13. include $(CLEAR_VARS)
    14. LOCAL_MODULE := xxx.xml
    15. LOCAL_MODULE_TAGS := optional
    16. LOCAL_MODULE_CLASS := ETC
    17. LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
    18. LOCAL_SRC_FILES := $(LOCAL_MODULE)
    19. include $(BUILD_PREBUILT)
    20. xxx.xml :
    21. <?xml version="1.0" encoding="utf-8"?>
    22. <permissions>
    23. <library name="xxx"
    24. file="/system/framework/xxx.jar"/>
    25. </permissions>

    3.编译so库
    方法1 : 单独编译

    1. include $(CLEAR_VARS)
    2. LOCAL_MODULE := mylib
    3. LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    4. LOCAL_MODULE_SUFFIX := .so
    5. LOCAL_MODULE_TAGS := optional
    6. LOCAL_MULTILIB := both
    7. LOCAL_SRC_FILES_32 := mylib_32.so
    8. LOCAL_SRC_FILES_64 := mylib_64.so
    9. LOCAL_MODULE_PATH :=$(TARGET_OUT)/lib
    10. include $(BUILD_PREBUILT)

    方法2 : 轮询编译

    1. LOCAL_PATH := $(call my-dir)
    2. define XIAOMOR_PREBUILT_LIB_template
    3. include $(CLEAR_VARS)
    4. LOCAL_MODULE := $(1)
    5. LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    6. LOCAL_MODULE_TAGS := optional
    7. LOCAL_STRIP_MODULE := false
    8. LOCAL_SRC_FILES_32 := $(2)
    9. LOCAL_SRC_FILES_64 := $(3)
    10. LOCAL_MULTILIB := both
    11. include $(BUILD_PREBUILT)
    12. endef
    13. my_libs := \
    14. libaa \
    15. libbb \
    16. libcc \
    17. libdd \
    18. $(foreach lib,$(my_libs), \
    19. $(eval $(call XIAOMOR_PREBUILT_LIB_template, $(lib).so ,$(lib)_32.so, $(lib)_64.so )))

    4.预编译apk
    预置apk至系统,如果apk含有so库的话,也需要提前编译到系统中,解压apk文件,将so提取出来放置某一文件夹中,通过LOCAL_PREBUILT_JNI_LIBS将so编译至system/app/package/lib/arm目录

    1. include $(CLEAR_VARS)
    2. LOCAL_MODULE := xxx
    3. LOCAL_MODULE_CLASS := APPS
    4. LOCAL_MODULE_SUFFIX := .apk
    5. LOCAL_MODULE_TAGS := optional
    6. LOCAL_SRC_FILES := xxxx.apk
    7. LOCAL_CERTIFICATE := platform
    8. LOCAL_MULTILIB := 32
    9. LOCAL_DEX_PREOPT := false
    10. LOCAL_MODULE_PATH :=$(TARGET_OUT)/app
    11. LOCAL_PREBUILT_JNI_LIBS:= \
    12. Hhappy_libs/libffmpeg.so \
    13. Hhappy_libs/libhpplayvideo.so \
    14. Hhappy_libs/libhpplayvideo19.so \
    15. Hhappy_libs/liblbffmpeg.so \
    16. Hhappy_libs/libusbserver.so
    17. include $(BUILD_PREBUILT)