Интересно, почему нет правильного ответа на этот вопрос, я искал пару часов, но не нашел хорошего ответа. Итак, мы работаем над командой, в которой мой друг написал C-библиотеку и скомпилировал ее как .so-файл (он называется ttplib.so) (предположим, что у меня нет доступа к его коду C). Теперь я должен использовать этот файл .so в своем приложении для Android. Но я не знаю, как загрузить библиотеку и как использовать ее методы. У меня есть хорошая документация. Было бы здорово, если бы вы могли сказать мне, как создать файл Android.mk. Должен ли я использовать dlopen?Как использовать предварительно скомпилированный файл .so в другом приложении для Android?
2
A
ответ
1
Поместите ttplib.so в папку нового проекта libs/armeabi или libs/armeabi-v7a в зависимости от того, с чем она была скомпилирована.
Где-то в вашем новом приложении (до взаимодействия с библиотекой) добавить эту строку кода
System.loadLibrary("ttplib");
Теперь, когда он загружен в память, вам нужно взаимодействовать с ним с помощью JNI. Вам придется вернуться к коду C экспортировать некоторые JNI функции:
JNIEXPORT jint JNICALL Java_com_example_package_MyClass_methodName(JNIEnv* env, jobject jthis, jfloat value)
{
return 5;
}
Затем вам нужно добавить ClassName.java в своем новом проекте:
package com.example.package;
public class MyClass
{
private native int methodName(float value);
private void someJavaMethod()
{
int i = methodName(65.33f);
}
}
Вот именно, в в двух словах.
Но это касается того, когда вы хотите написать код в C в своем приложении, а не когда у вас уже есть общая библиотека, и вы просто хотите назвать ее функциями. – Gabriel
@Gabriel Знаете ли вы, как это сделать. то, пожалуйста, помогите мне в этом –