No se puede cargar la biblioteca: reloc_library : no se puede localizar 'rand'
Estoy tratando de usar la biblioteca PJSIP para mi aplicación de Android. He construido la aplicación de ejemplo pjsua de acuerdo con este manual: https://trac.pjsip.org/repos/wiki/Getting-Started/Android
Pero cuando la aplicación de ejemplo se está iniciando, la excepción se activa:
- Error de compilación de pjsip 2.5.5
- Construir PJSIP para Android en Windows?
- (180 ringning) No tono de llamada al conectar la llamada androide pjsip (pjsua2)
- Cámara de conmutación de adelante hacia atrás en pjsip android
- Uso de pjsip con 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)
Parece que appl no puede cargar libpjsua2.so biblioteca. Nunca he utilizado el NDK antes, así que no tengo ninguna idea sobre este problema, por favor ayúdame …
- PJSUA2 sip aplicación android nativa
- Llamar a pjlib desde un subproceso desconocido / externo. Debe "" registrar threads externos con pj_thread_register ()
- Pjsua aplicación hecha por pjsip error de registro de mensajes?
- Cómo aumentar el nivel de volumen de micrófono en Android PJSIP?
- ¿Cómo usar PJSIP en Android?
- Android construir PJSIP con openssl
- No se puede abrir el dispositivo de sonido: funcionamiento del dispositivo de audio no válido o no admitido
- Implementación de App-to-App llamando a Android
Esto sucede si ha creado sus componentes nativos con el objetivo de android-21
, pero está intentando ejecutarlo en un dispositivo con una versión anterior de Android. A menos que usted tome un cuidado muy especial, no puede ejecutar binarios construidos con el objetivo de android-21
en dispositivos más antiguos. Para las funciones básicas de C, no debería importar la versión de destino entre android-3
y android-20
que use, debería funcionar en todas ellas, pero si usa android-21
sólo funciona en esa versión y más reciente.
Consulte https://stackoverflow.com/a/27093163/3115956 para obtener más detalles sobre este problema.
Mstorsjo responde a mi pregunta. Pero quiero escribir un comentario: Tenía archivos de propiedades correctas, pero durante el edificio pjsip encontré los siguientes registros:
sip@ubuntu:~/pjsip/trunk$ ./configure-android configure-android: APP_PLATFORM not specified, using android-21 configure-android: TARGET_ABI not specified, using armeabi
Por lo tanto, si desea compilar el proyecto en alguna versión de plataforma específica, debe establecer el parámetro APP_PLATFORM para configurar el script android.
TARGET_ABI=armeabi-v7a APP_PLATFORM=android-8 ./configure-android --use-ndk-cflags
He encontrado esto al usar el teléfono de HUAWEI con la biblioteca del opni y del pngquant jni para el androide. Por último, la solución es que añado rand, srand y atof funciones de implementación en mi archivo de origen. Entonces el problema desapareció.
Solución de https://github.com/cocos2d/cocos2d-x/issues/15234 ¡ Pruébelo!
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; }
- Android: ¿Cómo restablecer / eliminar las preferencias de la aplicación durante las pruebas de unidad?
- Android – Configuración de TextView a negrita no funciona