2013-05-10 3 views
2

Интересно, почему нет правильного ответа на этот вопрос, я искал пару часов, но не нашел хорошего ответа. Итак, мы работаем над командой, в которой мой друг написал C-библиотеку и скомпилировал ее как .so-файл (он называется ttplib.so) (предположим, что у меня нет доступа к его коду C). Теперь я должен использовать этот файл .so в своем приложении для Android. Но я не знаю, как загрузить библиотеку и как использовать ее методы. У меня есть хорошая документация. Было бы здорово, если бы вы могли сказать мне, как создать файл Android.mk. Должен ли я использовать dlopen?Как использовать предварительно скомпилированный файл .so в другом приложении для Android?

ответ

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); 
    } 
} 

Вот именно, в в двух словах.

+0

Но это касается того, когда вы хотите написать код в C в своем приложении, а не когда у вас уже есть общая библиотека, и вы просто хотите назвать ее функциями. – Gabriel

+0

@Gabriel Знаете ли вы, как это сделать. то, пожалуйста, помогите мне в этом –