Проблема с подключением во время выполнения Android

Я пытаюсь создать приложение и jar-интерфейс с помощью системы сборки Android в Linux. У моего приложения есть зависимость от моего интерфейса, поэтому я должен подготовить 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)

include $ (LOCAL_PATH) /interface/Android.mk

включает $ (CLEAR_VARS)

LOCAL_PATH:= $(STACK_PATH)

include $ (LOCAL_PATH) /application/Android.mk

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

2.Интерфейс Android.mk: /source/interface/Android.mk

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

LOCAL_PATH:= $(позвоните в мой каталог)

включает $ (CLEAR_VARS)

LOCAL_SRC_FILES: = $ (вызвать все-subdir-java-файлы, src)

LOCAL_MODULE:= MyInterface

LOCAL_MODULE_TAGS: = необязательно

LOCAL_MODULE_CLASS: = JAVA_LIBRARIES

LOCAL_JAVA_RESOURCE_DIRS: = src

включает $(BUILD_JAVA_LIBRARY)

$ (вызов дистанционных целей, droidcore, $ (full_classes_jar): MyInterface.jar)

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

Ниже приведены файлы Android.mk для применения в случае 1.

Приложение Android.mk: /source/application/Android.mk

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

TOP_LOCAL_PATH:= $(позвоните в мой каталог)

LOCAL_PATH:= $(TOP_LOCAL_PATH)

включает $ (CLEAR_VARS)

LOCAL_SRC_FILES: = $ (вызывать все-subdir-java-файлы)

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;' не удалось

Ниже приведены файлы Android.mk для применения в CASE 2.

Приложение 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 + = MyInterface

LOCAL_SRC_FILES: = $ (вызывать все-subdir-java-файлы)

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 уже определен источником / интерфейсом. Стоп.

Но когда они собираются отдельно без использования системы сборки, этой проблемы не возникает. Также приложение работает без ошибок.


Когда интерфейс был построен для Myinterface.jar с использованием eclipse и собрал application-apk с помощью этого jar интерфейса (путем статического связывания) в Linux, приложение работало гладко.

Есть ли проблема в моих файлах Android.mk? Пожалуйста помоги

2 ответа

Я думаю, что вы должны иметь LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES между include $(BUILD_PACKAGE) а также include $(BUILD_MULTI_PREBUILT)

Смотрите другой ответ.

Перейдите по ссылке для получения сведений о системе Android Build http://www.kandroid.org/online-pdk/guide/build_system.html

Другие вопросы по тегам