0

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

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

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

以下是主界面和界面的 Android.mk 文件。

1.Andriod.mk主文件: /source/Android.mk

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

STACK_PATH:= $(调用我的目录)

LOCAL_PATH := $(STACK_PATH)

包括 $(CLEAR_VARS)

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

包括 $(CLEAR_VARS)

LOCAL_PATH := $(STACK_PATH)

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

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

2.接口Android.mk:/source/interface/Android.mk

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

LOCAL_PATH:= $(调用我的目录)

包括 $(CLEAR_VARS)

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

LOCAL_MODULE := 我的界面

LOCAL_MODULE_TAGS := 可选

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_JAVA_RESOURCE_DIRS := src

包括 $(BUILD_JAVA_LIBRARY)

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

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

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

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

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

TOP_LOCAL_PATH:= $(调用我的目录)

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;' 的链接 失败的

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

应用程序 Android.mk /source/application/Android.mk

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

TOP_LOCAL_PATH:= $(调用我的目录)

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 += 我的界面

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 已经由 source/interface 定义。停止。

但是当它们单独构建而不使用构建系统时,这个问题就不存在了。应用程序也可以正常运行。


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

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

4

2 回答 2

0

我认为你应该在和LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES之间include $(BUILD_PACKAGE)include $(BUILD_MULTI_PREBUILT)

查看另一个答案

于 2016-04-28T08:28:09.410 回答
-1

按照链接获取 Android 构建系统详细信息 http://www.kandroid.org/online-pdk/guide/build_system.html

于 2014-07-21T08:28:52.890 回答