我想要的:微笑...
构建kotlin库,将其作为.aar文件Java项目提供,使用我的.aar不需要配置任何内容,只需包含我的.aar并开始播放即可。第一个Q:它甚至可能?因为我失去了希望:微笑:
如果使用我的库的项目没有配置Kotlin,那么它会显示ClassNotFoundException。
-这是为什么?
如果 kotlin 具有与 Java 字节码相同的字节码(并且 100% 兼容),
那么,在JAVA项目中使用kotlin中的.aar writen时,为什么我需要kotlin呢?
经过一番研究,我发现我必须在我的项目中包含kotlin运行时库,但我不知道如何,我已经准备好了基本上所有的解决方案,
我认为Android不支持胖aar,
谢谢大家的关注。
更新:在我的aar项目中,我有一个具有以下build.gradle的模块:
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
/////
.
.
dependencies {
////
.
.
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
在使用.aar的应用程序中,我在project 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 .
.
.
.
.
.
更新2:PS:
显然,我必须将kotlin运行时库添加到我的. aar中,我在网上都试过了,它不起作用:'(
最终更新:感谢cilling找到了解决方案,注意你必须将运行时库包含到本地maven repo中,它不能访问在线内容
Thnx for all
调用下面的 call for smile.aar file in build.gradle
file。
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在同步期间无法下载它们。
那么,合适的解决方案是什么?你应该像Maven一样使用存储库管理器。你可以在maven local:https://stackoverflow.com/a/42160584/7508302上看到@Robyer帖子如何包含所有依赖项并发布它。该帖子是关于提供库的源代码,但也有现成的gradle发布脚本。
然后,在您的“本地maven”中将发布一个库。然后,您可以在gradle文件中添加(在您想要使用该库的项目中):repositories{mavenLocal()}
,然后像这样添加依赖项:
implementation ('com.example.android:library:0.0.1-SNAPSHOT@aar') {
transitive = true
}
完整说明:
1)在你的库中添加一个gradle文件,负责在mavenLocal()上发布。详情请见https://stackoverflow.com/a/42160584/7508302,并准备使用脚本。
2)将库推送到mavenLocal。这是一个本地maven存储库。您不需要安装任何东西,因为maven存储库只需要具有适当的目录结构。
3) 检查mavenLocal目录。应该有一个包含您的域名的目录树,例如:<code>com-
4) 将<code>mavenLocal()部分。注意,mavenLocal
只指向文件中的某个位置。
5) 仅使用限定名称添加库依赖项(例如:com.mycompany:library:0.0.1@aar
。如果要获取传递依赖项,请添加可传递参数(该传递参数意味着该库可能依赖于其他模块)。
这样,gradle 应该获取声明的依赖项,并将它们包含在项目中。
错误:任务“:app:TransformResourcesWithMergeJavaResforDebug”执行失败。 exception:com.android.build.api.transform.transformexception:com.android.builder.packaging.duplicateFileexception:APK meta-inf/license.txt文件
我写了一些库,其中有一部分UI。此外,这个库使用另一个库。我想提供发行版来在任何应用程序中使用这部分UI。 我得库有下一个依赖项: /home/user/projects/mainapp/app/build/intermediates/explodede-aar/com.my.sdk/sdk/0.0.1/res/values/values.xml:78:21-29:找不到与给定名称匹配的资源:at
StackTrace:
问题内容: 我有一个和上。 在运行时添加到单击时。 我使用以下代码: 但没有显示任何在。 问题答案: 我看到您创建了一个名为: 但您永远不会将其添加到面板中。相反,您将没有文本的新内容添加到面板中: 当然,这将构造一个不可见的空标签。 添加类似后,还尝试在您的实例上调用和,如下所示: 这样,您可能还需要调用您的框架实例,以便调整大小以适合新组件。 另外,请不要使用/ 布局,这是非常糟糕的做法(除非
下载并安装了最新的Kotlin插件后,我从Android Studio收到了过时的Kotlin运行时警告,告诉我: 'kotlin-stdlib-1.1.2'库中的Kotlin运行时版本为1.1.2,而插件版本为1.1.2-release-studio2.3-3。应更新运行库以避免兼容性问题。 我尝试单击Update Runtime按钮,但收到另一条消息: 当前不支持Gradle项目的自动库版本更
问题内容: 我收到以下错误,因为Java 11排除了JavaFX作为最新版本的一部分。 那么如何在Java 11中将JavaFX添加到Eclipse?谢谢。 问题答案: 按照入门指南,这些是从Eclipse运行JavaFX 11的必需步骤。 1安装Eclipse 2018-09 。 2安装JDK 11 。 3将Java 11作为已安装的JRE添加到Eclipse:Eclipse->窗口->首选项-