aar中的扩展函数不能直接在project中使用,是因为扩展函数的文件会被变成**kt.class文件。
举个例子:
Util.kt中有个扩展函数
fun String.getLength(): Int {//kotlin extension function
}
那么它就会被编译成UtilKt.class
如果是同一个project下,自然可以直接使用它的扩展函数,但是如果在aar中,你就无法引用了,而kotlin也无法直接使用class文件。
但是我们是清楚的,kotlin是可以直接使用JAVA,而JAVA又恰巧可以引用class文件。
所以我们可以写一个Java类
class Extension{
public String getLength(string s){
return UtilKt().getLength(s)
}
}
然后在KT文件中使用我们的Extension的实例就可以间接调用扩展函数了。
网友评论