Mp4parser запускается на устройстве из Android Studio, но сбой при установке APK вручную
Я использую mp4parser
для объединения videos
. Приложение отлично работает при работе с A.S. но если я установлю приложение вручную (передайте и запустите APK
), или если я запустил его из TestFairy
, приложение выйдет из строя.
Это началось, когда я обновил Target Sdk
до Lollipop
.
Я добавил
`aspectjrt-1.7.3.jar`
`isoparser-1.0-RC-27.jar`
в директории libs
в моем проекте.
Я также пробовал с ниже versions
`aspectjrt-1.8.5.jar`
`isoparser-1.0-RC-37.jar`
`isoparser-1.0.6.jar`.
Не уверен, что это правильный путь, но он работает от Android Studio
, а затем сбрасывается с TestFairy
или Manual install
.
Ошибка говорит
com.coremedia.iso.boxes.FileTypeBox
отсутствует
но его там в isoparser jar
.
Что мне не хватает, это проблема с версией?
Мое устройство работает Android 4.2.2
может ли это быть проблемой, если моя цель SDK
равна Android 5.0
Исключение составляет:
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
Ответы
Ответ 1
Извините, что после долгого разочарования я обнаружил, что gradle не упаковывал мои файлы lib в apk, это не имело никакого отношения к mp4Parser,
в конечном итоге после обновления Android Studio, все SDK и gradle apk упакованы должным образом.
Ответ 2
Всякий раз, когда вы получаете исключение ClassNotFound, ваш загрузчик классов не может найти класс, который должен работать. Он не имеет ничего общего с парсером MP4, который не работает с 4.2.2, как было предложено выше.
Используете ли вы Gradle? Является ли класс связанным как библиотека в файле сборки gradle?
Попробуйте добавить это в зависимости от зависимостей {} в файле build.gradle приложения:
compile fileTree(dir: 'libs', include: '*.jar')
Это будет включать все jar файлы в вашей папке libs в окончательной сборке.
Ответ 3
Добавьте эти 2 строки в proguard-rules.pro
. Это сработало для меня.
-keep class com.coremedia.iso.boxes.** { *; }
-keep class com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox { *; }
сделайте свой build.gradle
для использования proguard-rules.pro
следующим образом:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Ответ 4
Попробуйте очистить код Target Annotations в вашем классе mp4parser