首页 文章

Android运行时链接问题

提问于
浏览
0

我正在尝试使用Linux中的android构建系统构建应用程序和接口jar我的应用程序与我的接口有依赖关系,因此我必须在应用程序make之前使接口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:= $(调用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:= $(调用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:= $(调用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: * source/applications: MODULE.TARGET.JAVA_LIBRARIES.MyInterface already defined by source/interface. Stop.

但是当它们单独构建而不使用构建系统时,就不存在这个问题 . 应用程序运行也没有错误 .


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

我的Android.mk文件有什么问题吗?请帮忙

2 回答

相关问题