【问题标题】:Adding a jar file from libs/ to Android.mk将 jar 文件从 libs/ 添加到 Android.mk
【发布时间】:2012-12-11 22:19:40
【问题描述】:

几乎Adding a external jar reference in Android.mk 中找到了答案,但我还没有找到答案。

我的项目在 libs/ 目录下包含 commons-io-2.4.jar 和 jsch-0.1.49.jar。一切都在eclipse中构建得很漂亮。现在我想编写一个 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)

我确定只是我弄错了一点秘方,但我想不通。

Android.mk 文件有没有好的参考资料?我只能找到使用 ndk 的食谱。

【问题讨论】:

标签: android android-make


【解决方案1】:

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

关键是

  1. 用我想要包含的库的符号名称定义LOCAL_STATIC_JAVA_LIBRARIES,例如libjsch
  2. 执行CLEAR_VARS(为什么?)
  3. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 定义为libjsch:<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)

【讨论】:

  • 如何在 android.mk 中添加 .aar 文件?
  • @ofskyMohsen 和这个回答的过程一样,把LOCAL_STATIC_JAVA_LIBRARIES换成LOCAL_STATIC_JAVA_AAR_LIBRARIES就行了
  • 你能说一下如何导入 libjsch:libs like import .....?
【解决方案2】:

非常感谢 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)

【讨论】:

  • 你能说一下如何导入 json-simple 像 import .....?
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多