Intereting Posts
Как вы переопределяете модуль / зависимость в модульном тесте с Dagger 2.0? Android Не удалось создать экземпляр активности: не нашел класс на пути Можно ли использовать один и тот же идентификатор приложения facebook как для Android, так и для приложения iphone? Android NDK: load_library: не удается найти srand CLI на DalvikVM терпит неудачу в JNI lib OnClickListener на вкладках не работает Каковы основы работы с событиями ввода пользователей в Android? Прослушиватель уровня изображения в google maps v2 в android Дооснащение дает EOFException только в первый раз Прокрутка Android SurfaceView Как я могу не допустить, чтобы активность Android вкратце попадала в портретный режим, когда я указал пейзаж? Запустить одиночный файл java со стандартным основным (String args) методом – Android Studio GCM Push Notification Большой размер значка Как я могу выровнять свой ImageView с моим TextView в LinearLayout? Показывать последний элемент в ListiView при нажатии на редактирование текста

Невозможно загрузить библиотеку: reloc_library : не удается найти «rand»

Я пытаюсь использовать библиотеку PJSIP для своего приложения для Android. Я создал образец приложения pjsua в соответствии с этим руководством: https://trac.pjsip.org/repos/wiki/Getting-Started/Android

Но когда запускается приложение-образец, триггеры исключений:

12-06 15:03:58.043: D/dalvikvm(628): Trying to load lib /data/data/org.pjsip.pjsua2.app/lib/libpjsua2.so 0x4129d980 12-06 15:03:58.064: W/dalvikvm(628): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/pjsip/pjsua2/app/MyApp; 12-06 15:03:58.064: D/AndroidRuntime(628): Shutting down VM 12-06 15:03:58.064: W/dalvikvm(628): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 12-06 15:03:58.083: E/AndroidRuntime(628): FATAL EXCEPTION: main 12-06 15:03:58.083: E/AndroidRuntime(628): java.lang.ExceptionInInitializerError 12-06 15:03:58.083: E/AndroidRuntime(628): at org.pjsip.pjsua2.app.MainActivity.onCreate(MainActivity.java:85) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.Activity.performCreate(Activity.java:4465) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.access$600(ActivityThread.java:123) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.os.Handler.dispatchMessage(Handler.java:99) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.os.Looper.loop(Looper.java:137) 12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.main(ActivityThread.java:4424) 12-06 15:03:58.083: E/AndroidRuntime(628): at java.lang.reflect.Method.invokeNative(Native Method) 12-06 15:03:58.083: E/AndroidRuntime(628): at java.lang.reflect.Method.invoke(Method.java:511) 12-06 15:03:58.083: E/AndroidRuntime(628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-06 15:03:58.083: E/AndroidRuntime(628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-06 15:03:58.083: E/AndroidRuntime(628): at dalvik.system.NativeStart.main(Native Method) 12-06 15:03:58.083: E/AndroidRuntime(628): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 37 cannot locate 'rand'... 12-06 15:03:58.083: E/AndroidRuntime(628): at java.lang.Runtime.loadLibrary(Runtime.java:370) 12-06 15:03:58.083: E/AndroidRuntime(628): at java.lang.System.loadLibrary(System.java:535) 12-06 15:03:58.083: E/AndroidRuntime(628): at org.pjsip.pjsua2.app.MyApp.<clinit>(MyApp.java:235) 

Кажется, что appl не может загрузить библиотеку libpjsua2.so. Я никогда раньше не использовал NDK, поэтому у меня нет никаких идей по этой проблеме, пожалуйста, помогите мне …

Solutions Collecting From Web of "Невозможно загрузить библиотеку: reloc_library : не удается найти «rand»"

Это происходит, если вы создали свои собственные компоненты с целью android-21 , но пытаетесь запустить его на устройстве со старой версией Android. Если вы не проявляете особой осторожности, вы не можете запускать двоичные файлы, созданные с целью android-21 на старых устройствах. Для базовых функций C не важно, какая целевая версия используется для android-3 и android-20 , она должна работать на всех из них, но если вы используете android-21 она работает только с этой версией и новее.

См. https://stackoverflow.com/a/27093163/3115956 для получения дополнительной информации об этой проблеме.

Mstorsjo отвечает на мой вопрос. Но я хочу написать один комментарий: у меня были правильные файлы свойств, но во время создания pjsip я нашел следующие журналы:

 sip@ubuntu:~/pjsip/trunk$ ./configure-android configure-android: APP_PLATFORM not specified, using android-21 configure-android: TARGET_ABI not specified, using armeabi 

Поэтому, если вы хотите скомпилировать проект на определенной версии платформы, вам нужно установить параметр APP_PLATFORM для скрипта configure-android.

 TARGET_ABI=armeabi-v7a APP_PLATFORM=android-8 ./configure-android --use-ndk-cflags 

Я столкнулся с этим при использовании телефона HUAWEI с библиотекой opus и pngquant jni для Android. Наконец, решение заключается в том, что я добавляю в исходный файл rand, srand и atof функции. Тогда проблема исчезла.

Решение от https://github.com/cocos2d/cocos2d-x/issues/15234 Попробуйте!

 static u_long myNextRandom = 1; double atof(const char *nptr) { return (strtod(nptr, NULL)); } int rand(void) { return (int)((myNextRandom = (1103515245 * myNextRandom) + 12345) % ((u_long)RAND_MAX + 1)); } void srand(u_int seed) { myNextRandom = seed; }