Skip to content
This repository has been archived by the owner on Jan 17, 2024. It is now read-only.

Unable to load .so library in flutter using platform android emulator #184

Closed
santoshyadav140293 opened this issue Feb 15, 2023 · 4 comments

Comments

@santoshyadav140293
Copy link

Hi,

I am working on flutter application using andriod emulator.

I have used the following dart code to load ".so" and ".dll" file.

var libraryPath = path.join(
Directory.current.path, 'primitives_library', 'TestLibrary.so');

final dylib = DynamicLibrary.open(libraryPath);

but when i build project it gives following error.
DynamicLibrary.open error: Invalid argument(s): Failed to load dynamic library (126)

Please suggest any solution to load ".so" library using emulator.

@dcharkes
Copy link
Contributor

dcharkes commented Feb 15, 2023

Hi @santoshyadav140293, nice to meet you!

You need to bundle your library in the jniLibs folder in the generated flutter create --template=plugin_ffi --platform=android. Place the .so file in android/src/main/jniLibs/${target.architecture.cmakeAndroid}/. See more info on https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs

Did you make a Flutter FFI plugin or a Dart standalone package? Dart standalone packages are currently not supported in Flutter applications. This is being tracked in:

@santoshyadav140293
Copy link
Author

Yes, I am using Flutter FFI plugin.

Kindly confirm weather we can build ".so" library from Android Studio only or we can use some other tools.

Is there any difference between Android ".so" library and Linux ".so" library ?

@dcharkes Please suggest.

@dcharkes
Copy link
Contributor

Is there any difference between Android ".so" library and Linux ".so" library ?

Yes, they are very different.

They use a different ABI (application binary interface), they likely run on different hardware (your linux machine is like x64, while your Android device is likely arm64).
You can see the ABI with for example: https://stackoverflow.com/questions/35424987/how-to-get-architecture-of-a-shared-object-file-so-file-using-gnu-c-program

They also use different libraries for system calls etc. So for Android you will always need to compile with the Android NDK.

Kindly confirm whether we can build ".so" library from Android Studio only or we can use some other tools.

You can build it from Android studio, or with any other compiler that can target the Android NDK.

@santoshyadav140293
Copy link
Author

Thank you for the response it helps me a lot.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

2 participants