Easy to use solution to bake fresh version of OpenSLL into your NDK Library
This package made for using it with Gradle's "prefab" dependencies system.
So it's better to start with reading more about it here or here.
Using Google's "Prefabbed" OpenSLL library you'll face a problem with libssl.so
and libcrypto.so
on devices with Android 5
In this cases the one and only way to have latest version of OpenSSL in your app is merge it into your library
But you can have the best of both worlds: easy to implement prefab dependency + static .a libraries that will guarantee that your code will work on any version of Android as you expect
- Add dependency to your build.gradle:
repositories {
maven { url 'https://jitpack.io' }
}
..
dependencies {
..
implementation 'com.github.ibitcy:eo-mobile-openssl-static:1.1.1.12'
..
}
- Add this code pieces to your CMakeLists.txt:
find_package(openssl REQUIRED CONFIG)
..
get_target_property(OPENSSL_INCLUDE_DIR openssl::ssl INTERFACE_INCLUDE_DIRECTORIES)
..
set_target_properties(openssl::crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_INCLUDE_DIR}/../../../../jni/include/lib/${CMAKE_ANDROID_ARCH_ABI}/libcrypto.a)
set_target_properties(openssl::ssl PROPERTIES IMPORTED_LOCATION ${OPENSSL_INCLUDE_DIR}/../../../../jni/include/lib/${CMAKE_ANDROID_ARCH_ABI}/libssl.a)
..
target_link_libraries(
your_library_name
..
openssl::ssl
openssl::crypto
..
)
- Build! 🎉🎉🎉
We use this repo to build .a and .so https://github.com/stephenkopylov/android_openssl_build_scripts/tree/main