Проблема с подключением во время выполнения 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