Upgrade to beta7 - UnsatisfiedLinkError on Android

Hello,

After upgrading my dependencies from beta6 to beta7 I receive error on android:

java.lang.ExceptionInInitializerError
at org.nd4j.nativeblas.NativeOpsHolder.getInstance(NativeOpsHolder.java:119)
at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.(NativeOpExecutioner.java:86)
at java.lang.Class.newInstance(Native Method)
at org.nd4j.linalg.factory.Nd4j.initWithBackend(Nd4j.java:5178)
at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5092)
at org.nd4j.linalg.factory.Nd4j.(Nd4j.java:270)
at org.nd4j.linalg.factory.Nd4j.getRandom(Nd4j.java:493)
at org.datavec.image.transform.PipelineImageTransform.(PipelineImageTransform.java:93)
at org.datavec.image.transform.PipelineImageTransform.(PipelineImageTransform.java:85)
at org.datavec.image.transform.PipelineImageTransform.(PipelineImageTransform.java:77)

RuntimeException: ND4J is probably missing dependencies…
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so” not found

   This is content in my gradle file:
  dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation(group: 'org.deeplearning4j', name: 'deeplearning4j-core', version: '1.0.0-beta7') {
    exclude group: 'org.bytedeco', module: 'opencv-platform'
    exclude group: 'org.bytedeco', module: 'leptonica-platform'
    exclude group: 'org.bytedeco', module: 'hdf5-platform'
    exclude group: 'org.nd4j', module: 'nd4j-base64'
}
implementation group: 'org.nd4j', name: 'nd4j-native', version: '1.0.0-beta7'
implementation group: 'org.nd4j', name: 'nd4j-native', version: '1.0.0-beta7', classifier: "android-arm64"
implementation group: 'org.bytedeco', name: 'openblas', version: '0.3.9-1.5.3'
implementation group: 'org.bytedeco', name: 'openblas', version: '0.3.9-1.5.3', classifier: "android-arm64"
implementation group: 'org.bytedeco', name: 'leptonica', version: '1.79.0-1.5.3'
implementation group: 'org.bytedeco', name: 'leptonica', version: '1.79.0-1.5.3', classifier: "android-arm64"

annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.14'

}

What I can do to use latest version?

@saudet was there anything in specific we’re missing here? If you look at the examples out here:

you should be doing everything right. I’m not fully sure how javacpp with gradle works , but I’m pretty sure you can add a jvm arg similar to maven specifying -Djavacpp.platform=android-arm64 as well if you want to simplify your file a bit.

That’s been fixed with Switch to static linking for Android by sshepel · Pull Request #472 · KonduitAI/deeplearning4j · GitHub

So this will be released soon?

@lavajaw for now use snapshots… we’re not sure about a release yet. Maybe within the next month or so, but we still have a few features to work on here. We won’t do a release just for a minor bug fix or 2. Definitely by the end of the year.