我想要的:smile::
建立科特林图书馆,作为.aar文件交付使用.aar的Java项目无需进行任何配置,只需添加.aar即可开始播放。第一问:还有可能吗?因为我失去了希望:微笑:
如果使用我的图书馆的项目未配置Kotlin,则显示ClassNotFoundException。
-为什么?
如果kotlin与Java字节码具有相同的字节码,(并且100%兼容),
然后为什么在JAVA项目中使用用kotlin写的.aar时需要有kotlin?
经过一番重新研究,我发现我必须在项目中包含kotlin运行时库,但我不知道如何,我已经准备好基本上所有解决方案都可以通过网络进行,
我认为Android不支持fat aar,
谢谢大家的关注。
更新在我的aar项目中,我有一个带有以下build.gradle的模块
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
/////
.
.
dependencies {
////
.
.
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
在我的使用.aar的应用程序中我在build.gradle项目中有以下内容
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
在build.gralde模块中
implementation(name: 'my-aar-library', ext: 'aar')
并且当我运行该应用程序时,它崩溃了,这里是堆栈:
09-25 15:14:22.814 3239-3239/com.example.mymodule E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mymodule, PID: 3239
java.lang.NoClassDefFoundError: kotlin.jvm.internal.Intrinsics
at com.com.example.mymodule.views.MyCustomView.<init>(PCMajorHeadereView.kt)
at .
.
.
.
.
.
UPDATE 2:PS:
显然,我必须将kotlin运行时库添加到我的.aar我在网上尝试了所有,但没有用:'(
在build.gradle
文件中调用以下对smile.aar文件的调用。
implementation project(':smile)
假设微笑是.aar文件名。
如果要运行Kotlin,必须在项目build.gradle中包括以下内容:>
buildscript { ext.kotlin_version = '1.3.31' dependencies { classpath 'com.android.tools.build:gradle:3.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
并且还将它们包含在应用程序级别build.gradle中
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
//in dependencies
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
问题是您的aar不包含依赖关系树(.pom文件),因此Gradle在同步期间无法下载它们。