安卓开发中,有时候需要在系统环境下开发apk,导入第三方jar包或者so库。

导入aar包:

1、在模块根目录下新建文件夹libs,将需要aar包拷贝进libs.
2、在Android.mk文件加入:

  1. LOCAL_STATIC_JAVA_AAR_LIBRARIES := demo

3、在include $(BUILD_PACKAGE)后面加入:

  1. include $(CLEAR_VARS)
  2. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := demo:libs/demo.aar
  3. include $(BUILD_MULTI_PREBUILT)

导入jar包:

1、在模块根目录下新建文件夹libs,将需要jar包拷贝进libs.
2、在Android.mk文件加入:

  1. LOCAL_STATIC_JAVA_LIBRARIES := \demo

3、在include $(BUILD_PACKAGE)后面加入:

  1. include $(CLEAR_VARS)
  2. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \demo:libs/demo.jar
  3. include $(BUILD_MULTI_PREBUILT)

导入so文件:

需要的so文件简单点的做法是将文件拷贝到system/lib下和system/lib64下面。
可以通过PRODUCT_COPY_FILES 进行拷贝:

  1. PRODUCT_COPY_FILES +=
  2. device/qom/userdata/libs/demo1.so:system/lib/demo1.so
  3. device/qom/userdata/libs/demo2.so:system/lib/demo2.so

编译输出so文件

  1. PRODUCT_COPY_FILES += \
  2. $(call find-copy-subdir-files,*,vendor/emdoor/apps/AgeingTest/libs/armeabi-v7a,system/priv-app/AgeingTest/lib/arm) \
  3. $(call find-copy-subdir-files,*,vendor/emdoor/apps/FactoryTest/libs/armeabi-v7a,system/priv-app/FactoryTest/lib/arm)

下面给出一个导入aar包,jar包的完整Android.mk文件

  1. ifneq ($(TARGET_BUILD_PDK), true)
  2. LOCAL_PATH:= $(call my-dir)
  3. include $(CLEAR_VARS)
  4. LOCAL_SRC_FILES := $(call all-java-files-under, src)
  5. LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
  6. LOCAL_PACKAGE_NAME := DemoApp
  7. LOCAL_PRIVATE_PLATFORM_APIS := true
  8. LOCAL_CERTIFICATE := platform
  9. LOCAL_MODULE_TAGS := optional
  10. LOCAL_PRIVILEGED_MODULE := true
  11. LOCAL_USE_AAPT2 := true
  12. LOCAL_PROGUARD_ENABLED := disabled
  13. LOCAL_DEX_PREOPT := false
  14. LOCAL_STATIC_ANDROID_LIBRARIES += \
  15. androidx.car_car \
  16. androidx-constraintlayout_constraintlayout
  17. //定义jar包名称
  18. LOCAL_STATIC_JAVA_LIBRARIES := \demo_jar
  19. //定义aar包名称
  20. LOCAL_STATIC_JAVA_AAR_LIBRARIES := \demo_aar
  21. include $(BUILD_PACKAGE)
  22. //指定jar包目录和aar目录
  23. include $(CLEAR_VARS)
  24. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
  25. demo_jar:libs/demo_jar.jar \
  26. demo_aar:libs/demo_aar.aar
  27. include $(BUILD_MULTI_PREBUILT)
  28. endif

一些导入jar的例子

  1. LOCAL_STATIC_ANDROID_LIBRARIES := \
  2. android-support-v7-recyclerview \
  3. android-support-v7-appcompat \
  4. android-support-percent \
  5. LOCAL_STATIC_JAVA_LIBRARIES:=glidelibs\
  6. mediaplayer_gsonlib\
  7. libvlc\
  8. fastjsonlib\
  9. eventbuslib\
  10. fmlib\
  11. kwmusiclib\
  12. speechcontrollib\
  13. tingphoneopensdkbaby\
  14. litepal\
  15. include $(BUILD_PACKAGE)
  16. include $(CLEAR_VARS)
  17. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  18. LOCAL_MODULE := glidelibs
  19. LOCAL_PRIVATE_PLATFORM_APIS := true
  20. LOCAL_SRC_FILES := MediaPlayer/libs/glide-3.7.0.jar
  21. LOCAL_UNINSTALLABLE_MODULE := true
  22. include $(BUILD_PREBUILT)
  23. include $(CLEAR_VARS)
  24. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  25. LOCAL_MODULE := mediaplayer_gsonlib
  26. LOCAL_PRIVATE_PLATFORM_APIS := true
  27. LOCAL_SRC_FILES := MediaPlayer/libs/gson-2.2.4.jar
  28. LOCAL_UNINSTALLABLE_MODULE := true
  29. include $(BUILD_PREBUILT)
  30. include $(CLEAR_VARS)
  31. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  32. LOCAL_MODULE := fastjsonlib
  33. LOCAL_PRIVATE_PLATFORM_APIS := true
  34. LOCAL_SRC_FILES := MediaPlayer/libs/fastjson-1.2.56.jar
  35. LOCAL_UNINSTALLABLE_MODULE := true
  36. include $(BUILD_PREBUILT)
  37. include $(CLEAR_VARS)
  38. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  39. LOCAL_MODULE := eventbuslib
  40. LOCAL_PRIVATE_PLATFORM_APIS := true
  41. LOCAL_SRC_FILES := MediaPlayer/libs/eventbus-3.1.1.jar
  42. LOCAL_UNINSTALLABLE_MODULE := true
  43. include $(BUILD_PREBUILT)
  44. include $(CLEAR_VARS)
  45. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  46. LOCAL_MODULE := fmlib
  47. LOCAL_PRIVATE_PLATFORM_APIS := true
  48. LOCAL_SRC_FILES := MediaPlayer/libs/client_sdk_1.3.6.jar
  49. LOCAL_UNINSTALLABLE_MODULE := true
  50. include $(BUILD_PREBUILT)
  51. include $(CLEAR_VARS)
  52. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  53. LOCAL_MODULE := kwmusiclib
  54. LOCAL_PRIVATE_PLATFORM_APIS := true
  55. LOCAL_SRC_FILES := MediaPlayer/libs/kwmusic-autosdk-v2.0.6.jar
  56. LOCAL_UNINSTALLABLE_MODULE := true
  57. include $(BUILD_PREBUILT)
  58. include $(CLEAR_VARS)
  59. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  60. LOCAL_MODULE := speechcontrollib
  61. LOCAL_PRIVATE_PLATFORM_APIS := true
  62. LOCAL_SRC_FILES := MediaPlayer/libs/SpeechControllerBaby_1.0.6.jar
  63. LOCAL_UNINSTALLABLE_MODULE := true
  64. include $(BUILD_PREBUILT)
  65. include $(CLEAR_VARS)
  66. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  67. LOCAL_MODULE := tingphoneopensdkbaby
  68. LOCAL_PRIVATE_PLATFORM_APIS := true
  69. LOCAL_SRC_FILES := MediaPlayer/libs/TingPhoneOpenSDK_6.3.1.jar
  70. LOCAL_UNINSTALLABLE_MODULE := true
  71. include $(BUILD_PREBUILT)
  72. include $(CLEAR_VARS)
  73. LOCAL_MODULE_CLASS := JAVA_LIBRARIES
  74. LOCAL_MODULE := litepal
  75. LOCAL_PRIVATE_PLATFORM_APIS := true
  76. LOCAL_SRC_FILES := MediaPlayer/libs/litepal-3.0.0.jar
  77. LOCAL_UNINSTALLABLE_MODULE := true
  78. include $(BUILD_PREBUILT)