bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.39k stars 1.56k forks source link

Missing 32 bit files #2234

Closed nickgitnick closed 1 month ago

nickgitnick commented 1 month ago

I am building an Android app, and trying to support both armeabi-v7a and arm64-v8a. It appears there are many Android devices, some relatively new that still use the older 32 bit instruction set.

I believe these are the relevent sections of the app build.gradle file

plugins {
    id 'com.android.application'
    id 'org.bytedeco.gradle-javacpp-platform' version '1.5.10'
    id 'org.bytedeco.gradle-javacpp-build' version '1.5.10'
}

ext {
    javacppPlatform = 'android-arm,android-arm64'
}

android {
    compileSdk 34
    buildToolsVersion '33.0.0'

    buildTypes {
        release {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a'//, 'x86_64'// may be added
            }
        }
    }

}

dependencies {

    implementation 'org.bytedeco:javacv:1.5.10'
    javacpp 'org.bytedeco:ffmpeg-platform:6.1.1-1.5.10'

    repositories {
        mavenCentral()
        google()
    }
}

This works great arm64-v8a devices, but crashes on armeabi-v7a devices. When I build, and open my bundle, I can see that the armeabi-v7a folder is missing all of the .so files from javacv, while the arm64-v8a folder has them. Also, if I include x86 as a platform, no files are added for this abi, but I can include 'x86_64' and the files are included.

If I look inside the precompiled javacv-platform-1.5.10-bin.zip files, I do not see these 32 bit files, which perhaps is the reason they don't get included, using the javacpp gradle plugins?

Is it intentional that 32 bit android is not included in the precompiled .so files? If so, do I need to build them myself?

saudet commented 1 month ago

Duplicate of https://github.com/bytedeco/javacpp-presets/issues/1483