Dropbox Sync API – Error de enlace no satisfecho

Estoy intentando implementar DropboxSync API en mi aplicación Android existente.
He descargado la API de DropboxSync y DropboxSync copiado todas las librerías en la carpeta lib de mi aplicación.
También he señalado la ubicación de la biblioteca nativa a la carpeta libs donde se encuentra libDropboxSync.so.

Manifest.xml

 .... <!-- Dropbox Activities --> <activity android:name="com.dropbox.sync.android.DbxAuthActivity" /> <activity android:name="com.dropbox.client2.android.AuthActivity" android:launchMode="singleTask" > <intent-filter> <data android:scheme="db-intentionally-hidden-app-key" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <service android:name="com.dropbox.sync.android.DbxSyncService" android:enabled="true" android:exported="false" android:label="Dropbox Sync" /> 

Main_Activity.java

 public class Activity_Main extends Activity implements OnClickListener, OnItemClickListener, OnTouchListener { .... .... .... private DbxAccountManager mDbxAcctMgr; onCreate(....) { //Application giving FATAL EXCEPTION on the line below. mDbxAcctMgr = DbxAccountManager.getInstance((Activity)Activity_Main.this, DROPBOX_APP_KEY, DROPBOX_APP_SECRET); .... } .... } 

Logcat Logs

 12-06 10:10:25.362: E/AndroidRuntime(8110): FATAL EXCEPTION: main 12-06 10:10:25.362: E/AndroidRuntime(8110): Process: com.***.***, PID: 8110 12-06 10:10:25.362: E/AndroidRuntime(8110): java.lang.UnsatisfiedLinkError: Couldn't load DropboxSync from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/data/app/com.***.***-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.***.***-1, /vendor/lib, /system/lib]]]: findLibrary returned null 12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.Runtime.loadLibrary(Runtime.java:358) 12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.System.loadLibrary(System.java:526) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeHttp.<clinit>(NativeHttp.java:447) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeLib.<init>(NativeLib.java:33) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.NativeLib.<clinit>(NativeLib.java:11) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.CoreAccountManager.initNativeLib(CoreAccountManager.java:155) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.CoreAccountManager.<init>(CoreAccountManager.java:126) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:149) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.dropbox.sync.android.DbxAccountManager.getInstance(DbxAccountManager.java:115) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.***.***.activities.Activity_Main.onCreate(Activity_Main.java:459) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.Activity.performCreate(Activity.java:5243) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.access$700(ActivityThread.java:135) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.os.Handler.dispatchMessage(Handler.java:102) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.os.Looper.loop(Looper.java:137) 12-06 10:10:25.362: E/AndroidRuntime(8110): at android.app.ActivityThread.main(ActivityThread.java:4998) 12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.reflect.Method.invokeNative(Native Method) 12-06 10:10:25.362: E/AndroidRuntime(8110): at java.lang.reflect.Method.invoke(Method.java:515) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 12-06 10:10:25.362: E/AndroidRuntime(8110): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 12-06 10:10:25.362: E/AndroidRuntime(8110): at dalvik.system.NativeStart.main(Native Method) 12-06 10:10:25.532: W/ActivityThread(8110): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader()); 

Ya he probado esta solución: Error en dropboxSync: findlibrary devuelto null
Pero no está funcionando para mí.
Por favor, no marque esta pregunta como un duplicado.

Cualquier ayuda es muy apreciada, gracias.

libDropboxSync.so faltaba en la carpeta armeabi-v7a en el directorio libs .
Copié libDropboxSync.so de la carpeta armeabi-v7 carpeta armeabi-v7a en el directorio libs y la biblioteca se cargó correctamente.
Desde que estoy usando Google-Nexus-7 2 ª generación para la depuración, por lo tanto la biblioteca armeabi-v7a en armeabi-v7a carpeta era una necesidad.

Compruebe el punto 3 y 4. Dar 2 minutos de mirada en esos dos.

  1. En Android Studio, cambie a la "vista de proyecto".
  2. Desde el directorio libs del SDK descargado, arrastre dropbox-sync-sdk-android.jar en el directorio app / libs de su proyecto.
  3. Haga clic derecho en dropbox-sync-sdk-android.jar y elija "Añadir como biblioteca". Haga clic en "Aceptar" en el cuadro de diálogo que aparece.
  4. Haga un nuevo directorio en su proyecto en app / src / main llamado jniLibs. Desde el SDK, arrastre armeabi, armeabi-v7a, mips y x86 en el nuevo directorio jniLibs.

Encontró una solución en algún grupo de Google comprimir esto a un archivo zip: lib / armeabi / libDropboxSync.so

** ¡presta atención! Tiene que ser 'lib' y no 'libs' **

Ahora, cambie el nombre del archivo 'lib.zip' a 'armeabi.jar' y agréguelo al directorio 'libs' de su módulo (donde está el dropbox jar) todas las otras 'soluciones' encontradas en línea no ayudaron excepto éste.

Hazlo por cada entorno que necesites, como armeabi-v7, etc.

  • Documentación de Dropbox android sdk
  • Uso de Proguard para obfuscar la aplicación Android con las bibliotecas de Dropbox.com
  • Integre Dropbox en la aplicación Android, pero sin iniciar sesión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.