How can I add a 3rd-party library to an Android AOSP build?

后端 未结 1 485
既然无缘
既然无缘 2021-02-14 16:56

I am trying to add the Jackson JSON library to my AOSP project. I am able to compile my project and flash it to a phone, but I get a runtime error:

E/JavaBinder(         


        
1条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-14 17:13

    To include a 3rd party library from source:

    1. copy the library's source into a directory under $ANDROID_BUILD_TOP/external/ (ex: $ANDROID_BUILD_TOP/external/jackson)
    2. Create an Android.mk file, and place it in the library's folder (ex: $ANDROID_BUILD_TOP/external/jackson/Android.mk

      Contents of Android.mk:

      # required (setup the build environment)
      LOCAL_PATH := $(call my-dir)
      include $(CLEAR_VARS)
      
      # optional step to automate some pre-compilation steps for this library
      # run `mvn generate-sources` before we compile
      $(info $(shell (mvn generate-sources -f $(LOCAL_PATH)/pom.xml)))
      
      # required (the name of the library we are building)
      LOCAL_MODULE := jackson
      
      # required (paths to all directories that include source code)
      # note the difference between the := (first line) and += (every other line)
      LOCAL_SRC_FILES := $(call all-java-files-under, src/main)
      LOCAL_SRC_FILES += $(call all-java-files-under, target/generated-sources)
      
      # required (tell the build system what kind of thing we are building)
      include $(BUILD_JAVA_LIBRARY)
      
    3. Add the library to the PRODUCT_BOOT_JARS section of your mk file. Which file you edit depends on what you are building (ex: build/target/product/core_minimal.mk)

      Original

      PRODUCT_BOOT_JARS := \
          okhttp \
          core-junit \
          bouncycastle \
          ext \
          gson
      

      Modified

      PRODUCT_BOOT_JARS := \
          okhttp \
          core-junit \
          bouncycastle \
          ext \
          gson \
          jackson
      
    4. For each submodule of your AOSP project (ex: frameworks/base), that you want to have access to the library, find the makefile (ex: $ANDROID_BUILD_TOP/frameworks/base/Android.mk and add an entry for your library to the LOCAL_JAVA_LIBRARIES line. Example:

      Original

      LOCAL_JAVA_LIBRARIES := guice gson
      

      Modified

      LOCAL_JAVA_LIBRARIES := guice gson jackson
      
    5. Compile your project.

    0 讨论(0)
提交回复
热议问题