google / google/prefab

[BUG] Android 5 devices crashing with UnsatisfiedLinkError libcurl.so

Open
#112 7 comments 0 reactions 1 assignee Claimed by @DanAlbert View on GitHub
bug ndkports
Dominant language
Kotlin
Stars
236
Forks
33
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
Wanted to use the new native library dependencies but apparently Android 5 devices are not happy with this and they are all crashing.

**To Reproduce**
build.gradle
```
implementation 'com.android.ndk.thirdparty:openssl:1.1.1g-alpha-1'
implementation 'com.android.ndk.thirdparty:curl:7.69.1-alpha-1'
```
CMakeLists.txt
```
find_package(curl REQUIRED CONFIG)
...
target_link_libraries(
...
curl::curl
)
```
Kt side:
```
init {
try {
System.loadLibrary("mylib")
} catch (ignored: UnsatisfiedLinkError) {
ReLinker.loadLibrary(context, "mylib")
}
}
```
Release build (app bundle)
Android 5 devices: Crash.

**Expected behavior**
Should not crash like the rest of the Android 6-10 versions?

**Logs**
```
dlopen failed: cannot locate symbol "OpenSSL_version_num" referenced by "libcurl.so"
java.lang.Runtime.load (Runtime.java:331)
java.lang.System.load (System.java:981)
com.getkeepsafe.relinker.SystemLibraryLoader.loadPath (SystemLibraryLoader.java:29)
com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal (ReLinkerInstance.java:204)
com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary (ReLinkerInstance.java:136)
com.getkeepsafe.relinker.ReLinker.loadLibrary (ReLinker.java:70)
com.getkeepsafe.relinker.ReLinker.loadLibrary (ReLinker.java:51)
*. (*.java:*)
```

**Environment:**
Prefab version:
```
android.enablePrefab=true
android.prefabVersion=1.1.0
```

Target OS version: Android 5
Build system: macOS Catalina

**Additional context**
All Android 5.0 - 5.1 - 5.1.1 versions are crashing. No other crash report received from higher versions.
Some crashing devices:
Huawei Y6 Pro
Samsung J3 (2016)
Samsung Note 3
Samsung Galaxy Grand Prime

Is it stated in somewhere that API 21-22 is not supported in these openssl / lib curl releases or am I missing something here?

Also it would be lovely to be able to use the OpenSSL without libcurl.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.