【发布时间】:2013-02-13 00:25:26
【问题描述】:
我正在尝试在 Linux 中使用 android 构建系统构建应用程序和接口 jar 我的应用程序依赖于我的界面,因此我必须在应用程序制作之前准备好界面 jar。
但我们在使用新构建的接口 jar 时遇到了构建/运行时问题。 我试图以两种不同的顺序制作应用程序。
案例 1. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_JAVA_LIBRARIES。 案例 2. 将接口构建为本地模块并将其与 apk 链接为 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES。
以下是主界面和界面的 Android.mk 文件。
1.Main 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.Interface Android.mk : /source/interface/Android.mk
========================================
LOCAL_PATH:= $(call my-dir)
包括 $(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:= $(call my-dir)
LOCAL_PATH:= $(TOP_LOCAL_PATH)
包括 $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := 我的应用程序
LOCAL_JAVA_LIBRARIES := 我的界面
包括 $(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:= $(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 += 我的界面
LOCAL_SRC_FILES := $(call 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 时,并使用此构建 application-apk Linux下的接口jar(通过静态链接),应用运行流畅。
我的 Android.mk 文件有问题吗?请帮忙
【问题讨论】:
-
您的应用和界面在 Android 树中的什么位置?您是否能够使用 Android 构建系统构建任何其他代码?
-
将我们的应用程序和源代码添加到 src/mips-ics 内的单独文件夹中。 IE; src/mips-ics/our-source/app 和 src/mips-ics/our-source/interface 。我们已经集成了不同类型的应用程序,这些应用程序已成功构建并在板上运行。但是,如果我们尝试将自己的界面构建为 jar,那么我们就会遇到这些问题。
标签: android makefile embedded-linux android-build android-make