2015-05-19 95 views
10

我正在使用mp4parser合併videos。從A.S運行該應用程序運行完美。但如果我手動安裝應用程序(傳輸並運行APK),或者如果我從TestFairy運行它,則應用程序會崩潰。mp4parser在Android Studio的設備上運行,但在手動安裝APK時崩潰

當我將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工作然後從TestFairyManual install崩潰。

錯誤說

com.coremedia.iso.boxes.FileTypeBox missing

但其在isoparser jar那裏。

我錯過了什麼,這是版本問題?

我的設備運行Android 4.2.2可能這也是一個問題,如果我的目標是SDKAndroid 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 
+0

在安卓4.2.2的MP4解析器不能正常工作,請嘗試其他版本 – sukumar

+0

真棒,謝謝你的快速反應。好的,對於安裝了4.2.2的用戶,我無能爲力,我有S4 mini和4.2。2是可用的最新版本。如果是這種情況,那麼在4.2.2中有另一個可以合併視頻的第三方庫? – BrettStuart

+0

嗨@sukumar,再次感謝您的回覆,我已經搜索,但無法找到任何有關Android 4.2.2和mp4parser問題或解決此問題的任何幫助,重要的是我們運行在Jellybean上,所以我需要找到一些東西如果你有更多的信息。我目前正在考慮使用類似ffmpeg或英特爾INDE媒體移動版,但兩者似乎都比較費時。任何意見,將不勝感激。 – BrettStuart

回答

0

每當你得到一個ClassNotFound的異常的類加載器無法找到類它需要運作。如上所述,它與MP4解析器無法在4.2.2上工作無關。

你使用Gradle嗎?該類是否在您的Gradle構建文件中捆綁爲一個庫?

嘗試添加該下依賴{}在應用程序的文件的build.gradle:

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

這將包括在庫中的所有jar-文件​​的最終版本文件夾中。

+0

嗨@DKIT,感謝您的迴應,我正在使用Gradle,並且我已經在依賴關係中的build.gradle中編譯了fileTree(dir:'libs',include:'* .jar')''。但我仍然得到錯誤:'java.lang.ClassNotFoundException:找不到路徑上的類「com.coremedia.iso.boxes.FileTypeBox」:DexPathList [[zip文件] /data/app/com.example.appname- 1.apk「],nativeLibraryDirectories = [/ data/app-lib/com.example.appname-1,/ vendor/lib,/ system/lib]] – BrettStuart

+0

確定 - 您是否將此依賴項添加到應用程序本身,或到應用程序依賴的模塊? Android需要在應用程序目錄下的libs目錄中找到它的依賴關係。 – DKIT

+0

如果這解決了您的問題,請接受我的答案。 – DKIT

1

對不起已故的答案,我發現太多的無奈之後,這gradle這個是不是包裝在APK我LIB文件,它有無關mp4Parser, 最終更新Android Studio中,所有的SDK的和搖籃包裝正確的APK之後。

+0

我面臨同樣的問題,現在沒有任何工作。你能告訴你升級了哪個android studio版本嗎? – SimpleCoder

0

在您的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' 
     } 
    } 
} 
相關問題