Этот код работает на Java. Но после перехода к Kotlin, компилятор higlits метод native fun stringFromNative(): String
как ошибка со следующим текстом:
Функция без тела должна быть абстрактной
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show() } companion object { init { System.loadLibrary("_ndkkt") } native fun stringFromNative(): String } }
Спасибо @KenVanHoeylandt!
Ответ:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Toast.makeText(this, stringFromNative(), Toast.LENGTH_LONG).show() } init { System.loadLibrary("_ndkkt") } external fun getStringFromNative(): String } }
Поместите external fun stringFromNative(): String
вне объекта-компаньона и в MainActivity
.
(Я нашел ответ, посмотрев https://github.com/ligee/kotlin-ndk-samples )