Eclipse не создает файл общей библиотеки в смешанном проекте (NDK и Java) - PullRequest
1 голос
/ 04 января 2012

У меня есть проект в Eclipse, который смешивает нативный и Java-код с использованием CDT и ADT.Это действительно просто - демонстрационный проект, как в android-ndk-r7 / samples / hello-jni

Мой Android.mk (в папке / jni):

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS    := -llog

LOCAL_MODULE    := hlsdrm
LOCAL_SRC_FILES := hlsdrm.cpp

include $(BUILD_SHARED_LIBRARY)

Все отлично компилируется, я могу загрузить библиотеку hlsdrm

System.loadLibrary("hlsdrm"); 

и вызывать встроенные функции.Но где находится файл библиотеки?В любой из папок проекта нет общей библиотеки libhlsdrm.so.Как я мог читать, он должен создать папку "libs" и поместить в нее получившуюся библиотеку.

Кроме того, когда я пытаюсь перечислить библиотеки, которые используются процессом приложения, вызывая:

PackageManager pm = getPackageManager();
String applicationPackage = this.getApplicationInfo().packageName;
ApplicationInfo ai = pm.getApplicationInfo(applicationPackage, PackageManager.GET_SHARED_LIBRARY_FILES);
String[] soFiles = ai.sharedLibraryFiles;

, тогда переменная soFiles пуста ... Я попытался указать библиотеку с помощьюuses-library значение в разделе приложения манифеста, но после этого ОС Android отказывается устанавливать это приложение и показывает ошибку INSTALL_FAILED_MISSING_SHARED_LIBRARY.

Может кто-нибудь объяснить мне, как я могу получить мою общую библиотеку - физическую.так файл?

Почему sharedLibraryFiles пусто, хотя библиотека загружается и можно вызывать собственный метод?

Как установить приложение, для которого требуется настраиваемая общая библиотека?

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Прежде всего, вы должны создать папку libs и настроить свой проект.

Для этого обратитесь к следующей статье:

http://maxters.net/2011/02/android-ndk-builder-for-eclipse-in-windows/

0 голосов
/ 05 октября 2012

Относительно библиотеки: она должна быть установлена ​​в / data / data / com.company.yourApp / lib / libhlsdrm.so

Кстати: soFiles не должно содержатьнативные библиотеки (файлы .so), но файлы .jar.Например, если вы укажете в манифесте <uses-library android:name="com.google.android.maps" />, ваша переменная soFiles будет содержать / system / framework / com.google.android.maps.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...