Tag: gradle

在gradle android库kotlin项目中禁用META-INF / *生成

美好的一天。 我写了一个kotlin android库并将其上载到bintray。 但是当我尝试在某些项目中使用它(通过gradle编译)时,它无法生成以下错误: > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/library_release.kotlin_module File1: C:\Users\Charlie\.android\build-cache\2939fbc6b0336396c9c4912d615880645b2c729d\output\jars\classes.jar File2: C:\Users\Charlie\OneDrive\Dev\Projects\AndroidStudio\MetuCardLib\demo\build\intermediates\bundles\default\classes.jar 我查阅了这两个.jar文件,它们都包含了带有library_release.kotlin_module文件的META-INF文件夹。 但更重要的是生成.aar(在bintray发布的Android存档)包含此文件夹以及此文件。 我已经检查了其他像样的bintray android库,它们似乎没有包含任何META-INF文件。 但是包含它的那些(在大多数情况下它们包含许可证文件)会产生相同的DuplicateFileException ,解决它的方法是在use-project的gradle文件中明确地排除它们。 这个library_release.kotlin_module文件有什么用处,我怎样在发布期间禁用它的生成? 因为我不想明确地排除使用这个库的每个项目,我也不想问其他开发者这样做。 这是图书馆的回购: https : //github.com/arslancharyev31/Anko-ExpandableTextView/它是bintray回购: https ://bintray.com/arslancharyev31/android/Anko-ExpandableTextView

每次我在公司的申请工作时,是否需要更新Kotlin?

我在为我工作的公司构建一个Android项目时遇到了麻烦。 目前,由于在.gradle文件中定义的依赖项的指定版本与当前版本的kotlin不匹配,所以当我尝试构建我的项目时,我遇到了一大堆错误。 所以,为了纠正这个问题,我已经更新了项目中突出显示的依赖项版本,以匹配我正在使用的kotlin的当前版本。 我最大的问题是每次我想要在Android上开发时,是否必须这样做? 我假设答案是很胖的,但是作为一个完全陌生的人,如果可能的话,我绝对需要社区的帮助。 只是为了解释我,我们有限的发展资源,因此这里的问题。 我将要接管Android的一面,也许应该注册一个为期一周的品酒课程(或类似的东西),但现在,我有我们的整个Android应用程序在最小的意见,测试或说明。 我也把这个问题发布到Reddit,我得到的最好的建议是添加一个“+”的build.gradle而不是版本号的依赖。 我从此尝试过,觉得它可能不是我需要的解决方案。 这是因为我觉得如果这是问题,实时应用程序将不会工作。 总之,我觉得我的应用程序的本地版本可能不工作,因为我有一些设置在Kotlin / Android工作室的某处,我需要改变…..任何建议,您可以提供RE这些设置可能会是巨大的帮助!

重复条目:META-INF / myLibrary.kotlin_module

更新到Android 3.0后,得到Kotlin错误: Execution failed for task ':myLibrary:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug'. > java.lang.RuntimeException: java.util.zip.ZipException: duplicate entry: META-INF/myLibrary.kotlin_module 这是我的库buid.gradle文件: apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' … dependencies { api "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" } 这是我的项目build.gradle ext.kotlin_version = '1.1.51' repositories { jcenter() mavenCentral() google() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }

Kotlin,Java,multidex,Dagger 2,Butterknife和Realm:transformClassesWithMargingForDebug:重复条目:org / jetbrains / annotations / NotNull.class

我们有现有的Java Android代码。 我们想要无痛地慢慢开始移动到Kotlin。 我们用Dagger 2,Butterknife和Realm。 我们使用Java 8编译器(但是我们的targetCompatibility和sourceCompatibility是1.7)。 我一直在网上漫游几个小时,看到了,GitHub对话等,并设法解决除了一个之外的所有问题: 构建是成功的,但是在尝试调试时,我们得到: Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/jetbrains/annotations/NotNull.class 有没有办法解决Gradle中的重复条目(也许使用packagingOptions或resolutionStrategy ?因为它是来自插件的重复…?)? 再次 – build project没有任何错误,只有transformClassesWithJarMergingForDebug失败! 这是应用程序的gradle: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' //apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'realm-android' kapt { generateStubs = true } android { signingConfigs { config { keyAlias 'MyAndroidKey' keyPassword 'password' […]

Kotlin:Gradle增量编译

在M9公告中,有人表示现在支持增量编译。 这是否也适用于Gradle,尤其是Android? 如果是,如何启用它?

使用yeoman生成器Gradle + Kotlin无法生成新项目

我使用brew install Caskroom/cask/android-studio在Mac上安装了Android Studio 然后,我跑yo gradle-kotlin ,并得到以下错误。 我能做些什么来使我的第一个Hello World工作? 谢谢 ✔ /Volumes/Git/android/kotlin-hello-world 10:53 $ yo gradle-kotlin _—–_ | | .————————–. |–(o)–| | Welcome to the | `———´ | incredible Gradle+Kotlin | ( _´U`_ ) | generator! | /___A___\ '————————–' | ~ | __'.___.'__ ´ ` |° ´ Y ` Detecting installed Gradle version… Fetching latest […]

正确的方法来获取与Gradle的Kotlin脚本配置属性

我在gradle.properties有一个属性: answer = 42 在build.gradle使用build.gradle : println "answer is ${answer}" 现在我想用Kotlin脚本代替Groovy进行Gradle配置。 如何以适当的方式访问属性? 我现在在build.gradle.kts做的是: fun property(name: String) = properties[name] as String println("answer is " + property("answer")) 这似乎不是很方便。 谢谢!

Mutidex和Kotlin

我正在使用multidex构建我们的应用程序。 在我们的构建中,我开始看到很多像这样的错误: java.lang.NoClassDefFoundError:kotlin.reflect.jvm.internal.pcollections.MapEntry 在构建中找不到与kotlin.reflect相关的许多类。 它只发生在API 19和波纹管。 有谁知道可能是什么原因造成的,以及如何解决这个问题? 提前致谢!

使用Kotlin在子类中执行静态方法编译?

有没有一种方法可以在Kotlin中的现有类中静态编译main()方法? 我试图让Gradle使用main()方法构建这个应用程序,但是我没有运气。 我也一直在尝试几个解决方法… class MyApp: App() { override val primaryView = MyView::class companion object Launcher { @JvmStatic fun main(args: Array<String>): Unit { launch(*args) } } } 在我的Gradle脚本中,我试图指定MyApp类有一个main()方法。 它错误了,但是当我打电话run时找不到类。 mainClassName = 'path.to.application.MyApp' 编辑 我为这个混淆道歉,但是我的问题的一部分可能与子类化有关,而不一定是找到main()类。 main()函数需要访问App定义的launch()方法。 出于某种原因,关联关键字不允许这样做:/如果这个信息是相关的,我们可以重新考虑downvotes吗?

Kotlin Back-Tick在方法名称中转义:它是如何工作的?

我发现,在Kotlin中可以命名这样的方法: fun `i am a test method`(){ Assert.assertEquals("x", "x") } 编译器生成一个带有下划线而不是空格的方法:“i_am_a_test_method”,这似乎是合理的,因为JVM 不允许带空格的方法。 Junit和/或Gradle如何使用备份名称报告这些测试?