从libs /添加jar文件到Android.mk

Edw*_*alk 7 android android-make

几乎找到了在Android.mk添加外部jar引用的答案,但我仍然不在那里.

我的项目在libs /目录中包含commons-io-2.4.jar和jsch-0.1.49.jar.在日食中,一切都建立得很漂亮.现在我想编写一个Android.mk文件来自动构建我的项目.

我的Android.mk看起来像这样,但它不起作用.

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := MyProject
LOCAL_CERTIFICATE := platform

LOCAL_STATIC_JAVA_LIBRARIES := jsch-0.1.49 commons-io-2.4

LOCAL_PROGUARD_FLAGS      := -include $(LOCAL_PATH)/proguard.flags

include $(BUILD_PACKAGE)

LOCAL_STATIC_JAVA_LIBRARIES := libs
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libs:jsch-0.1.49 libs:commons-io-2.4

include $(BUILD_MULTI_PREBUILT)
Run Code Online (Sandbox Code Playgroud)

我确定只有一点秘诀我错了,但我无法弄清楚.

Android.mk文件有很好的参考吗?我所能找到的只是与ndk一起工作的食谱.

Edw*_*alk 23

好吧,几个小时的谷歌搜索和实验似乎找到了解决方案.
在此记录以供其他人查找:

关键是要

  1. LOCAL_STATIC_JAVA_LIBRARIES使用我想要包含的库的符号名称定义,例如libjsch
  2. 执行CLEAR_VARS(为什么?)
  3. 定义LOCAL_PREBUILT_STATIC_JAVA_LIBRARIESlibjsch:<path-to-jar-file>
  4. 包括BUILD_MULTI_PREBUILT.

(测试显示任何符号名称(例如"foo")都可以正常工作,只要它在两个声明中匹配即可.)

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := MyProject

LOCAL_STATIC_JAVA_LIBRARIES := libjsch

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libjsch:libs/jsch-0.1.49.jar

include $(BUILD_MULTI_PREBUILT)
Run Code Online (Sandbox Code Playgroud)

  • @ofskyMohsen这与这个答案的过程相同,只需将“LOCAL_STATIC_JAVA_LIBRARIES”替换为“LOCAL_STATIC_JAVA_AAR_LIBRARIES” (2认同)

小智 6

非常感谢Edward Falk.我刚刚解决了我的问题你给了我再次感谢这里是我的代码.关键词"lib"是一个夜晚的母马.

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := MDM

LOCAL_STATIC_JAVA_LIBRARIES := libandroid-async-http libgcm libjson-simple


LOCAL_JAVA_LIBRARIES += telephony-common mms-common

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libandroid-async-http:libs/android-async-http-1.4.4.jar libgcm:libs/gcm.jar  libjson-simple:libs/json-simple-1.1.1.jar 

include $(BUILD_MULTI_PREBUILT)
Run Code Online (Sandbox Code Playgroud)