Kotlin-native: Update to 1.3.60, got some error

Created on 20 Nov 2019  路  7Comments  路  Source: JetBrains/kotlin-native

Hi,
When I update k/m to 1.3.60
I got two Error

First:
On iOS Build

Task :linkDebugFrameworkIOSArm64 
warning: linking module flags 'SDK Version': IDs have conflicting values ('[2 x i32] [i32 13, i32 2]' from /var/folders/ds/2v9832g575jblpl14n7p3nxh0000gn/T/protocols3108039485156635603.bc with '[2 x i32] [i32 13, i32 0]' from out) 

Second:
On Android Run

dlopen("/data/app/.../lib/arm64/libAndroid.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "__cxa_throw" referenced by "/data/app/.../lib/arm64/libAndroid.so"... 

But 1.3.50 is OK.
I don't know what's wrong

Please Help me, Thanks

Most helpful comment

@olonho Still getting the warning:

warning: linking module flags 'SDK Version': IDs have conflicting values ('[2 x i32] [i32 13, i32 2]' from /var/folders/4c/13yp5nx15q1_vfhb_cswvjt00000gn/T/protocols4296468658296551185.bc with '[2 x i32] [i32 13, i32 0]' from out)

Gradle: 6.1.1
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_211 (Oracle Corporation 25.211-b12)
OS: Mac OS X 10.15.3 x86_64

packForXcode task:

val packForXcode by tasks.creating(Sync::class) {
    val targetDir = File(buildDir, "xcode-frameworks")
    //selecting the right configuration for the iOS framework depending on the Xcode environment variables
    val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
    val framework = kotlin.targets.getByName<KotlinNativeTarget>("ios").binaries.getFramework(mode)

    inputs.property("mode", mode)
    dependsOn(framework.linkTask)

    from({ framework.outputDirectory })
    into(targetDir)

    /// generate a helpful ./gradlew wrapper with embedded Java path
    doLast {
        val gradlew = File(targetDir, "gradlew")
        gradlew.writeText("#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n")
        gradlew.setExecutable(true)
    }
}

All 7 comments

On iOS it is just a warning, not an error.

Android error is strange, could you please provide info on the Android version and device where you see this problem, it could be real.

Try to add smth like

```
diff --git a/konan/konan.properties b/konan/konan.properties
index 7bda4d7d4..c1164556a 100644
--- a/konan/konan.properties
+++ b/konan/konan.properties
@@ -496,7 +496,7 @@ clangOptFlags.android_arm32 = -O3 -ffunction-sections
linkerNoDebugFlags.android_arm32 = -Wl,-S
clangNooptFlags.android_arm32 = -O1
targetSysRoot.android_arm32 = target-sysroot-1-android_ndk
-linkerKonanFlags.android_arm32 = -lm -lc++_static -landroid -llog -latomic
+linkerKonanFlags.android_arm32 = -lm -lc++_static -lc++abi -landroid -llog -latomic

# Android ARM64, based on NDK.
targetToolchain.macos_x64-android_arm64 = target-toolchain-2-osx-android_ndk
@@ -523,7 +523,7 @@ clangFlags.android_arm64 = -cc1 -target-cpu cortex-a57 -emit-obj -disable-llvm-p
clangOptFlags.android_arm64 = -O3 -ffunction-sections
clangNooptFlags.android_arm64 = -O1
targetSysRoot.android_arm64 = target-sysroot-1-android_ndk
-linkerKonanFlags.android_arm64 = -lm -lc++_static -landroid -llog -latomic
+linkerKonanFlags.android_arm64 = -lm -lc++_static -lc++abi -landroid -llog -latomic
linkerNoDebugFlags.android_arm64 = -Wl,-S

# Android X86, based on NDK.
@@ -551,7 +551,7 @@ clangFlags.android_x86 = -cc1 -target-cpu i686 -emit-obj -disable-llvm-passes -x
clangOptFlags.android_x86 = -O3 -ffunction-sections
clangNooptFlags.android_x86 = -O1
targetSysRoot.android_x86 = target-sysroot-1-android_ndk
-linkerKonanFlags.android_x86 = -lm -lc++_static -landroid -llog -latomic
+linkerKonanFlags.android_x86 = -lm -lc++_static -lc++abi -landroid -llog -latomic
linkerNoDebugFlags.android_x86 = -Wl,-S

# Android X64, based on NDK.
@@ -579,7 +579,7 @@ clangFlags.android_x64 = -cc1 -target-cpu x86-64 -emit-obj -disable-llvm-passes
clangOptFlags.android_x64 = -O3 -ffunction-sections
clangNooptFlags.android_x64 = -O1
targetSysRoot.android_x64 = target-sysroot-1-android_ndk
-linkerKonanFlags.android_x64 = -lm -lc++_static -landroid -llog -latomic
+linkerKonanFlags.android_x64 = -lm -lc++_static -lc++abi -landroid -llog -latomic
linkerNoDebugFlags.android_x64 = -Wl,-S
`` in.konan/kotlin-native-macos-1.3.60/konan/konan.properties` and let us know if it fixes the problem.

@olonho
I Add this Code , Android seem be OK, Great!!
Thanks very very much.
and How do I get this Patch ?? at 1.3.61 ????

PS: iOS warning is ok???

Thanks~~

iOS warning is not a problem. We'll try to include it 1.3.61.

@olonho Still getting the warning:

warning: linking module flags 'SDK Version': IDs have conflicting values ('[2 x i32] [i32 13, i32 2]' from /var/folders/4c/13yp5nx15q1_vfhb_cswvjt00000gn/T/protocols4296468658296551185.bc with '[2 x i32] [i32 13, i32 0]' from out)

Gradle: 6.1.1
Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 1.8.0_211 (Oracle Corporation 25.211-b12)
OS: Mac OS X 10.15.3 x86_64

packForXcode task:

val packForXcode by tasks.creating(Sync::class) {
    val targetDir = File(buildDir, "xcode-frameworks")
    //selecting the right configuration for the iOS framework depending on the Xcode environment variables
    val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
    val framework = kotlin.targets.getByName<KotlinNativeTarget>("ios").binaries.getFramework(mode)

    inputs.property("mode", mode)
    dependsOn(framework.linkTask)

    from({ framework.outputDirectory })
    into(targetDir)

    /// generate a helpful ./gradlew wrapper with embedded Java path
    doLast {
        val gradlew = File(targetDir, "gradlew")
        gradlew.writeText("#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n")
        gradlew.setExecutable(true)
    }
}

Same warning here using Kotlin 1.3.61

Android error is fixed.
For iOS warning, see https://youtrack.jetbrains.com/issue/KT-35001

Was this page helpful?
0 / 5 - 0 ratings