2016-04-27 12 views
0

Ich versuche, liblinphone mit Android-Studio mit '.so' Dateien von Linphone Website zu verwenden, und ich baute es von mir selbst mit ndk 9,10,11,12 Versionen. Immer mit x86_64 Plattform erscheint der Fehler in Android-Monitor:liblinphone android x86_64 ffmpeg nicht laden

04-27 02:37:01.404 13883-13883/? I/LinphoneCoreFactoryImpl: Trying to load liblinphone for x86_64 
04-27 02:37:01.410 13883-13883/? W/LinphoneCoreFactoryImpl: Unable to load optional library libffmpeg-linphone-x86_64 
04-27 02:37:01.411 13883-13883/? I/LinphoneCoreFactoryImpl: Trying to load liblinphone for x86 
04-27 02:37:01.414 13883-13883/? W/LinphoneCoreFactoryImpl: Unable to load optional library libffmpeg-linphone-x86 
04-27 02:37:01.417 13883-13883/? D/AndroidRuntime: Shutting down VM 

Wenn ich die linphone Anwendung installieren Sie es mit Plattform arbeitet x86_64. Bitte helfen Sie mit, was könnte ich falsch machen?

Antwort

0

Ich hatte ähnliches Problem für arm64 Architektur, die ich mit der unten genannten Lösung gelöst habe.

Die beste Lösung, die ich bisher gefunden habe (und gewarnt werden: es ist ein hässlicher Hack) ist, einfach alle 64-Bit-Binärdateien von Ihrem APK auszuschließen. Wenn keine 64-Bit-Abhängigkeiten gefunden werden, lädt Android gerne die 32-Bit-Fallback-Versionen aller .so s und funktioniert gut, vorausgesetzt, Sie sind nicht von einer 64-Bit-spezifischen Funktionalität abhängig. Um dies zu implementieren in Ihrem Projekt folgendermaßen vor:

  1. In Ihrem gradle.properties im Projektstamm, fügen Sie die Zeile

    android.useDeprecatedNdk=true. 
    
  2. den folgenden Block zu Ihrer build.gradle Datei hinzufügen, Hinzufügen einer Zeile ausschließen für jede 64-Bit-Abhängigkeit:

    android { 
    ... 
    defaultConfig { 
    ... 
    ndk { 
        abiFilters "armeabi-v7a", "x86" 
    } 
    
    packagingOptions { 
        exclude "lib/arm64-v8a/librealm-jni.so" 
        } 
        } 
    } 
    

Sobald Sie

Source of this solution.