bytedeco / javacpp-presets

The missing Java distribution of native C++ libraries
Other
2.65k stars 737 forks source link

Conflict between gradle dependencies - Android Studio (Unsatisfied link Error) #513

Closed ritesh94 closed 6 years ago

ritesh94 commented 6 years ago

Hi,

I am using: Android Studio 3.0.1 minSdkVersion 21 targetSdkVersion 27

Following are the dependencies I am using along with javacpp:

dependencies {
implementation 'com.github.yalantis:ucrop:2.2.1-native'
implementation 'com.amazonaws:aws-android-sdk-core:2.2.+'

  compile(group: 'org.bytedeco', name: 'javacv-platform', version: '1.3') {
        exclude group: 'org.bytedeco.javacpp-presets'
    }
    compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: versions.ffmpeg
    compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: versions.ffmpeg, classifier: 'android-arm'
}
ext {
    versions = [
            'ffmpeg': '3.2.1-1.3'
    ]
}

Following is the error that I am getting which points to mFrameRecorder = new FFmpegFrameRecorder(mVideo, videoWidth, videoHeight, 1); :

com.github.crazyorr.ffmpegrecorder E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.github.crazyorr.ffmpegrecorder, PID: 18887 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:309) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at org.bytedeco.javacpp.Loader.load(Loader.java:585) at org.bytedeco.javacpp.Loader.load(Loader.java:530) at org.bytedeco.javacpp.avcodec$AVPacket.(avcodec.java:1694) at org.bytedeco.javacv.FFmpegFrameRecorder.(FFmpegFrameRecorder.java:149) at org.bytedeco.javacv.FFmpegFrameRecorder.(FFmpegFrameRecorder.java:129) at com.github.crazyorr.ffmpegrecorder.FFmpegRecordActivity.initRecorder(FFmpegRecordActivity.java:421) at com.github.crazyorr.ffmpegrecorder.FFmpegRecordActivity.access$1100(FFmpegRecordActivity.java:51) at com.github.crazyorr.ffmpegrecorder.FFmpegRecordActivity$5.doInBackground(FFmpegRecordActivity.java:287) at com.github.crazyorr.ffmpegrecorder.FFmpegRecordActivity$5.doInBackground(FFmpegRecordActivity.java:282) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  at java.lang.Thread.run(Thread.java:818) 

saudet commented 6 years ago

Try again with JavaCV 1.4 and FFmpeg 3.4.1. It should solve this.

ritesh94 commented 6 years ago

@saudet Thanks for reverting. Unfortunately, I am getting same error and App crashes.

saudet commented 6 years ago

Then it's probably just an issue with your device. Make sure to use ReLinker, it should fix everything: https://github.com/bytedeco/javacpp-presets/wiki/The-UnsatisfiedLinkError-X-File-%28a-real-experience%29

ritesh94 commented 6 years ago

This helped me somehow. JavaCV 1.4 and FFmpeg 3.4.1 Thanks.