NativeScript / android

NativeScript for Android using v8
https://docs.nativescript.org/guide/android-marshalling
Apache License 2.0
518 stars 136 forks source link

Kotlin issues (companion object) #1806

Open felixkrautschuk opened 4 months ago

felixkrautschuk commented 4 months ago

Environment Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):

Describe the bug I tried to do some basic stuff with Kotlin stuff inside a NativeScript app (as I have no experience with Kotlin development) and I am experiencing some issues with companion objects.

I added this Kotlin file to App_Resources/Android/src/main/java

// KotlinTest.kt
package com.example

class KotlinTest {
    val hello = "Hello from Kotlin!"    //working

    @JvmField
    val instanceTestField : Int = 1234  //working

    companion object {
        @JvmStatic
        fun increment(num: Int): Int {  //working
            return num + 1
        }

        @JvmField
        val message : String = "Hi!"    //not working

        const val VERSION = 9           //not working
    }
}

And I am trying to access the values like this in the NativeScript app:

const testObject = new com.example.KotlinTest();

console.log(testObject.hello);                    //working
console.log(testObject.instanceTestField);        //working
console.log(com.example.KotlinTest.increment(5)); //working

console.log(com.example.KotlinTest.message);      //not working
console.log(com.example.KotlinTest.VERSION);      //not working

As far as I can read here about @JvmField annotation and here about const modifier this is valid Kotlin so it also shold work in NativeScript, but I always get undefined for those elements.

To Reproduce Start the demo app provided below and check the logs in console.

Expected behavior JvmFields and const values inside companion objects should be accessible in NativeScript.

Sample project ns-android-kotlin.zip

Additional context