我正在尝试使用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 回答
我想你应该在
include $(BUILD_PACKAGE)
和include $(BUILD_MULTI_PREBUILT)
之间LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES
见another answer .
按照Android Build System详细信息的链接http://www.kandroid.org/online-pdk/guide/build_system.html