android运行时链接问题与接口

时间:2013-02-25 11:32:06

标签: android makefile embedded-linux static-linking android-build

我正在尝试使用Linux中的android构建系统构建一个应用程序和一个接口jar 我的应用程序与我的界面有依赖关系,因此我必须在应用程序生成之前使接口jar准备就绪。

但是我们在使用新构建的接口jar时遇到了构建/运行时问题。 我们试图以两种不同的顺序制作应用程序。

案例1.将接口构建为本地模块,并将其与apk链接为LOCAL_JAVA_LIBRARIES。 案例2.将接口构建为本地模块,并将其与apk链接为LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES。

以下是main和interface的Android.mk文件。

1.Main Andriod.mk档案: 的 /source/Android.mk

=======================================

STACK_PATH:= $(call my-dir)

LOCAL_PATH:= $(STACK_PATH)

包括$(CLEAR_VARS)

包括$(LOCAL_PATH)/interface/Android.mk

包括$(CLEAR_VARS)

LOCAL_PATH:= $(STACK_PATH)

包括$(LOCAL_PATH)/application/Android.mk

=======================================

2.Interface Android.mk: 的 /source/interface/Android.mk

=======================================

LOCAL_PATH:= $(致电my-dir)

包括$(CLEAR_VARS)

LOCAL_SRC_FILES:= $(调用all-subdir-java-files,src)

LOCAL_MODULE:= MyInterface

LOCAL_MODULE_TAGS:=可选

LOCAL_MODULE_CLASS:= JAVA_LIBRARIES

LOCAL_JAVA_RESOURCE_DIRS:= src

包括$(BUILD_JAVA_LIBRARY)

$(调用dist-for-goals,droidcore,$(full_classes_jar):MyInterface.jar)

=======================================

以下是CASE 1中应用程序的Android.mk文件。

应用Android.mk: 的 /source/application/Android.mk

=======================================

TOP_LOCAL_PATH:= $(call my-dir)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括$(CLEAR_VARS)

LOCAL_SRC_FILES:= $(调用all-subdir-java-files)

LOCAL_PACKAGE_NAME:= MyApplication

LOCAL_JAVA_LIBRARIES:= MyInterface

包括$(BUILD_PACKAGE)

包括$(BUILD_MULTI_PREBUILT)

=======================================

构建成功完成。但在尝试运行此应用程序时,它显示此错误。 I / dalvikvm(XXXX):解析Lcom / test / example / application失败;接口XXX'Lcom / test / example / interface;' W / dalvikvm(XXXX):类'Lcom / test / example / application;'的链接失败

以下是CASE 2中应用程序的Android.mk文件。

应用Android.mk 的 /source/application/Android.mk

=======================================

TOP_LOCAL_PATH:= $(call my-dir)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

包括$(CLEAR_VARS)

$(shell(cp $(LOCAL_PATH)/../ out / target / common / obj / JAVA_LIBRARIES / Interface_intermediates / classes-jarjar.jar $(LOCAL_PATH)/applications/libs/MyInterface.jar))

LOCAL_STATIC_JAVA_LIBRARIES + = MyInterface

LOCAL_SRC_FILES:= $(调用all-subdir-java-files)

LOCAL_PACKAGE_NAME:= MyApplicationss

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES + = MyInterface:libs / MyInterface.jar

包括$(BUILD_PACKAGE)

包括$(BUILD_MULTI_PREBUILT)

=======================================

这导致了如下构建错误。

build / core / base_rules.mk:166:*源/应用程序:已由源/接口定义的MODULE.TARGET.JAVA_LIBRARIES.MyInterface。停止。

但是当它们在不使用构建系统的情况下单独构建时,就不存在这个问题了。而且应用程序运行时没有错误。


当使用eclipse将接口构建到Myinterface.jar时,使用此构建application-apk 在Linux中,界面jar(通过静态链接),应用程序运行顺利。

我们的Android.mk文件有问题吗?请查看并提出您的建议

0 个答案:

没有答案