2015-05-19 34 views
10

Tôi đang sử dụng mp4parser để hợp nhất videos. Ứng dụng chạy hoàn hảo khi chạy từ A.S. nhưng nếu tôi cài đặt ứng dụng theo cách thủ công (chuyển và chạy APK) hoặc nếu tôi chạy ứng dụng từ TestFairy, ứng dụng sẽ gặp sự cố.mp4parser chạy trên thiết bị từ Android Studio nhưng gặp sự cố khi cài đặt APK theo cách thủ công

Điều này bắt đầu xảy ra khi tôi cập nhật Target Sdk thành Lollipop của mình. Tôi đã thêm

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

vào thư mục libs trong dự án của tôi.

Tôi cũng đã thử với bên dưới versions

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

Không chắc chắn nếu đúng cách của nó, nhưng nó hoạt động từ Android Studio sau đó bị treo từ TestFairy hoặc Manual install.

Lỗi nói

com.coremedia.iso.boxes.FileTypeBox missing

nhưng nó có trong isoparser jar.

Tôi đang thiếu gì, đây có phải là sự cố phiên bản không?

Điện thoại của tôi đang chạy Android 4.2.2 thể này cũng là một vấn đề nếu mục tiêu của tôi là SDKAndroid 5.0

Trường hợp ngoại lệ là:

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

Trong Android 4.2.2 Mp4 phân tích cú pháp không hoạt động đúng hãy thử phiên bản khác – sukumar

+0

Awesome, cảm ơn bạn đã phản ứng nhanh chóng. Ok, vì vậy không có gì tôi có thể làm cho người dùng đã cài đặt 4.2.2, tôi có một S4 mini và 4.2.2 là phiên bản mới nhất có sẵn. Nếu đây là trường hợp là có một lib bên thứ 3 hoạt động trong 4.2.2 để hợp nhất video? – BrettStuart

+0

Hi @sukumar, cảm ơn bạn đã trả lời, tôi đã tìm kiếm nhưng không thể tìm thấy bất kỳ thứ gì liên quan đến Android 4.2.2 và mp4parser hoặc bất kỳ trợ giúp nào trong việc giải quyết vấn đề này, Điều quan trọng là chúng tôi chạy trên Jellybean vì vậy tôi cần tìm một thứ gì đó , Nếu bạn có thêm thông tin về điều này. Tôi hiện đang xem xét việc sử dụng một cái gì đó như ffmpeg hoặc Intel INDE Media cho điện thoại di động nhưng cả hai dường như tốn nhiều thời gian hơn. Lời khuyên nào sẽ được đánh giá cao. – BrettStuart

Trả lời

0

Bất cứ khi nào bạn nhận được một ngoại lệ ClassNotFound classloader của bạn không thể tìm thấy những lớp nó cần phải hoạt động. Nó không có gì để làm với bộ phân tích cú pháp MP4 không làm việc trên 4.2.2 như đề xuất ở trên.

Bạn có sử dụng Gradle không? Lớp có được đóng gói dưới dạng thư viện trong tệp xây dựng gradle của bạn không?

Cố gắng thêm này phụ thuộc dưới {} trong file build.gradle của ứng dụng của bạn:

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

này sẽ bao gồm tất cả các jar-file trong libs của bạn thư mục trong xây dựng chính thức.

+0

Hi @DKIT, Cảm ơn bạn đã trả lời, tôi đang sử dụng Gradle và tôi đã có 'biên dịch fileTree (dir: 'libs', bao gồm: '* .jar')' trong build.gradle của tôi trong các phụ thuộc. nhưng tôi vẫn gặp lỗi: 'java.lang.ClassNotFoundException: Không tìm thấy lớp" com.coremedia.iso.boxes.FileTypeBox "trên đường dẫn: DexPathList [[tệp zip" /data/app/com.example.appname- 1.apk "], nativeLibraryDirectories = [/ data/app-lib/com.example.appname-1,/vendor/lib,/system/lib]]' – BrettStuart

+0

OK - bạn đã thêm sự phụ thuộc này vào chính ứng dụng hay vào một mô-đun mà ứng dụng phụ thuộc vào? Android cần phải có sự phụ thuộc trong thư mục libs trong thư mục ứng dụng để tìm nó. – DKIT

+0

Nếu điều này giải quyết được vấn đề của bạn, vui lòng chấp nhận câu trả lời của tôi. – DKIT

1

Xin lỗi, tôi thấy sau nhiều thất vọng, gradle không đóng gói các tệp lib của tôi trong apk, nó không liên quan gì đến mp4Parser, cuối cùng sau khi cập nhật Android Studio, tất cả SDK và Gradle gói apk được đóng gói đúng cách.

+0

Tôi đang đối mặt với cùng một vấn đề, và không có gì đang hoạt động ngay bây giờ. Bạn có thể cho biết phiên bản Android studio nào bạn đã nâng cấp không ?. – SimpleCoder

0

Thêm 2 dòng này vào proguard-rules.pro của bạn. Điều này làm việc cho tôi.

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

làm bạn build.gradle sử dụng proguard-rules.pro như thế này:

android { 
buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
Các vấn đề liên quan