使用J2V8

时间:2019-01-09 12:04:59

标签: android-studio kotlin j2v8

我正在尝试在我的Android应用中使用J2V8。对于Javascript中的console.log()语句,我有一个console变量以及类{{1}中的相应函数,如logerrorwarn等。 }。尽管我实现了此类,但是当我在应用程序中调用函数LogConsole时,它将引发registerJavaMethod()。我的代码的所有相关部分都可以在下面找到。

Console.kt

NoSuchMethodException

App.kt

import android.util.Log


interface Console {
    fun error(msg: String)
    fun warn(msg: String)
    fun debug(msg: String)
    fun log(msg: String)
}

class LogConsole : Console {
    private val TAG = LogConsole::class.simpleName

    override fun error(msg: String) {
        Log.e(TAG, msg)
    }

    override fun warn(msg: String) {
        Log.w(TAG, msg)
    }

    override fun log(msg: String) {
        Log.i(TAG, msg)
    }

    override fun debug(msg: String) {
        Log.d(TAG, msg)
    }
}

运行时错误

...
private val v8 = V8.createV8Runtime()
val console = LogConsole()
val v8Console = V8Object(v8)
v8.add("console", v8Console)
v8Console.registerJavaMethod(console, "log", "log", arrayOf<Class<*>>(String::class.java))
v8Console.registerJavaMethod(console, "error", "error", arrayOf<Class<*>>(String::class.java))
v8Console.registerJavaMethod(console, "debug", "debug", arrayOf<Class<*>>(String::class.java))
v8Console.registerJavaMethod(console, "warn", "warn", arrayOf<Class<*>>(String::class.java))
v8Console.release()
...

0 个答案:

没有答案