Mp4parser se ejecuta en el dispositivo de Android Studio pero se bloquea al instalar manualmente el APK

Estoy usando mp4parser para fusionar videos . La aplicación funciona perfectamente cuando se ejecuta desde AS . Pero si instalo la aplicación manualmente (transferir y ejecutar el APK ) o si lo ejecuto desde TestFairy , la aplicación se bloquea.

Esto comenzó a suceder cuando actualizé mi Target Sdk a Lollipop . He añadido el

 `aspectjrt-1.7.3.jar` `isoparser-1.0-RC-27.jar` 

En el directorio libs de mi proyecto.

También he intentado con versions inferiores

 `aspectjrt-1.8.5.jar` `isoparser-1.0-RC-37.jar` `isoparser-1.0.6.jar`. 

No está seguro de si es la manera correcta, pero funciona desde Android Studio luego se bloquea de TestFairy o Manual install .

El error dice

com.coremedia.iso.boxes.FileTypeBox desaparecido el com.coremedia.iso.boxes.FileTypeBox

Pero está allí en el isoparser jar .

¿Qué estoy perdiendo, es este un problema de versión?

Mi dispositivo está ejecutando Android 4.2.2 podría ser también un problema si mi SDK destino es Android 5.0

La excepción es:

 Caused by: java.lang.ClassNotFoundException:com.coremedia.iso.boxes.FileTypeBox Caused by: java.lang.ClassNotFoundException: Didn't find class "com.coremedia.iso.boxes.FileTypeBox" on path: /data/app/com.myapp.appname-1.apk 

Lo siento respuesta tardía, encontré después de mucha frustración, que gradle no estaba embalando mis archivos lib en el apk, no tenía nada que ver con mp4Parser, eventualmente después de actualizar Android Studio, todos los SDK y Gradle el apk empaquetado correctamente.

Siempre que obtengas una excepción de ClassNotFound, tu cargador de clases no puede encontrar la clase que necesita para operar. No tiene nada que ver con el analizador de MP4 que no funciona en 4.2.2 como se sugirió anteriormente.

¿Utilizas Gradle? ¿Está la clase incluida como una biblioteca en su archivo de compilación de gradle?

Intenta agregar esto en dependencies {} en el archivo build.gradle de tu aplicación:

  compile fileTree(dir: 'libs', include: '*.jar') 

Esto incluirá todos los archivos jar en su carpeta libs en la compilación final.

Añada estas 2 líneas en su proguard-rules.pro . Esto funcionó para mí.

 -keep class com.coremedia.iso.boxes.** { *; } -keep class com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox { *; } 

build.gradle su build.gradle para usar proguard-rules.pro como esto:

 android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.