2012-06-28 4 views
1

Я разрабатываю базовое приложение SIP для создания и получения вызовов для этой цели. Я сделал анализ проекта с открытым исходным кодом Sipdroid. в дополнение к этому i сделал это приложение для поддержки кодека g729. приложение работает нормально, но когда я изменил имя пакета приложения, я получаю сообщение об ошибке с этим новым кодеком. В то же время с другими кодеками приложение работает отлично. Вот мой логарифм ошибки. Здесь я привязал свои java-файлы
G729.java
Codec.java
Codecs.java
g729_jni.cppКак бороться с UnsatisfiedLinkError?

06-28 08:12:29.633: E/AndroidRuntime(712): java.lang.UnsatisfiedLinkError: open 
06-28 08:12:29.633: E/AndroidRuntime(712): at org.sipchat.codecs.G729.open(Native Method) 
06-28 08:12:29.633: E/AndroidRuntime(712): at org.sipchat.codecs.G729.init(G729.java:48) 
06-28 08:12:29.633: E/AndroidRuntime(712): at org.sipchat.codecs.Codecs$CodecSettings.onPreferenceTreeClick(Codecs.java:368) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.preference.Preference.performClick(Preference.java:820) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:190) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.widget.ListView.performItemClick(ListView.java:3513) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.os.Handler.handleCallback(Handler.java:587) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.os.Looper.loop(Looper.java:123) 
06-28 08:12:29.633: E/AndroidRuntime(712): at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-28 08:12:29.633: E/AndroidRuntime(712): at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 08:12:29.633: E/AndroidRuntime(712): at java.lang.reflect.Method.invoke(Method.java:507) 
06-28 08:12:29.633: E/AndroidRuntime(712): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-28 08:12:29.633: E/AndroidRuntime(712): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-28 08:12:29.633: E/AndroidRuntime(712): at dalvik.system.NativeStart.main(Native Method) 

у меня есть файл .so для поддержки G729 кодека, но после изменения имени пакета, файл .so не working.Because этого файла .so построен с использованием другого имени пакета. поэтому у меня должен быть исходный файл и его нужно снова скомпилировать, чтобы он работал. как это сделать?

, если у кого-нибудь есть представление об этом, пожалуйста, дайте мне некоторое предложение об этой ошибке. как справиться с этой ошибкой?
Благодаря

+1

Имя нативной функции должно соответствовать полное имя package.class класса из которых он является методом. Однако приложение может содержать пакеты, которые не соответствуют общему имени пакета приложения. –

+0

Да, после изменения имени пакета в файле компоновщика ошибка исчезла. это была строка, вызывающая ошибку 'const char * kInterfacePath =" org/sipdroid/pjlib/g729 ";' – juned

ответ

2

Как я столкнулся с такой же проблемой ... его не соответствие с JNI или whatevr Codec с фактическим кодом Java

+0

да, спасибо, На самом деле этот кодек был создан с использованием другого имени пакета в сравнении с текущим именем пакета. После изменения имени пакета ошибка исчезла. это строка, которую я изменил в соответствии с моими требованиями. 'const char * kInterfacePath =" org/sipdroid/pjlib/g729 ";' – juned

+0

да точно .... –

+0

Я хочу построить g729-кодек для моего приложения. с именем другого пакета. ты хоть знаешь об этом? – juned