相关疑难解决方法(0)

android studio error:默认接口方法仅支持从Android N开始(--min-api 24)

我升级到Android工作室3.1,我得到以下错误:

    Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是我的gradle配置:

      compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 27
     multiDexEnabled true
     //...
   }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,我的目标27已经领先于它抱怨的24个?我该怎么做才能解决这个问题?如果我改为1.8 java不会让我失去很多客户?为什么我在升级android studio之前没有收到此错误.

我不知道这是关于我最近投入的LifecycleObserver类,它是在kotlin中,现在我将其更改为java但在清理项目后仍然得到相同的错误:

public class LifeCycleAwareObserver implements LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void  onAppBackgrounded() {
    AnalyticsUtils.trackStartSession(true);
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
    AnalyticsUtils.trackStartSession(false);
}
Run Code Online (Sandbox Code Playgroud)

}

如何追踪错误的来源,以便我可以修复它?

这是我的版本依赖项:

project.ext {


        firebase_version …
Run Code Online (Sandbox Code Playgroud)

android java-8 kotlin

193
推荐指数
7
解决办法
6万
查看次数

为什么kotlin gradle插件不能用1.8目标构建?

我有使用intellij为kotlin 1.2.10配置的最简单的gradle项目.这是我的build.gradle文件:

buildscript {
    ext.kotlin_version = '1.2.10'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.ali'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'kotlin'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)

我有一个简单的java界面:

public interface MyMath {
    static int myAbs(int input) {
        return Math.abs(input);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我导入此接口并尝试调用myAbs方法时,它失败并显示以下错误:

Error:(6, 12) Kotlin: Calls to …
Run Code Online (Sandbox Code Playgroud)

intellij-idea gradle kotlin

56
推荐指数
6
解决办法
2万
查看次数

build.gradle文件中的compileKotlin块抛出错误"找不到参数[...]的方法compileKotlin()"

我正在尝试将Kotlin配置为在我的Android项目中使用Java 1.8.我已经尝试compileKotlin在我的build.gradle文件底部添加块,但如果我这样做,我会收到错误.

发生的错误如下:

错误:(38,0)无法在类型为org.gradle.api.Project的项目':core'上找到参数[build_dvcqiof5pov8xt8flfud06cm3 $ _run_closure4 @ 66047120]的方法compileKotlin().

没有这个块,项目运行良好.我错过了什么?这是完整的build.gradle文件,它是非常基本的东西:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'


android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'


    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 25
        versionCode 1
        versionName '1.0.0'

        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile 'com.google.android.support:wearable:2.0.2'
}

repositories {
    mavenCentral()
}

compileKotlin {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8

    kotlinOptions {
        jvmTarget = '1.8'
        apiVersion = …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin

43
推荐指数
4
解决办法
9832
查看次数

我需要导入什么才能在 UnitTests 中使用 launchActivity<>()?

所以我试图按照谷歌的说明来测试我的活动:https : //developer.android.com/guide/components/activities/testing

但是代码launchActivity<MyActivity>() 不起作用。我是否需要将 launchActivity 定义为规则,或者是否需要在 gradle 中导入一个库?

这些是我已经拥有的进口

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
Run Code Online (Sandbox Code Playgroud)

android android-testing androidx

15
推荐指数
3
解决办法
2817
查看次数

如何使用gradle和kotlin为android studio设置jvm目标?

尝试编译用kotlin编写的单元测试时出现以下错误。

Task :app:compileDebugUnitTestKotlin FAILED ...Cannot inline bytecode built with JVM target 1.7 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option

我尝试android在我的应用中为我的配置设置源兼容性build.gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

以及在root中配置所有kotlin编译任务build.gradle

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = '1.8'
    }
}
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin

10
推荐指数
2
解决办法
2051
查看次数

如何通过viewModels获取viewModel?(片段-ktx)

我正在为活动及其所有片段使用Single viewModel。

因此要初始化viewmodel是否必须在onActivityCreated所有片段的

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)
    }
Run Code Online (Sandbox Code Playgroud)

我正在浏览Android KTX扩展页面:(请参阅此处

我发现我可以像这样初始化视图模型:

    // Get a reference to the ViewModel scoped to this Fragment
    val viewModel by viewModels<MyViewModel>()

    // Get a reference to the ViewModel scoped to its Activity
    val viewModel by activityViewModels<MyViewModel>()
Run Code Online (Sandbox Code Playgroud)

所以我在gradle(app)中添加了以下依赖项:

    //ktx android
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.fragment:fragment-ktx:1.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试viewModels/activityViewModels在我的应用程序中使用它们的引用时,找不到。

我需要有关如何使用这些扩展名的一些基本示例的帮助,我尝试搜索一些未找到的示例。

android kotlin-android-extensions android-viewmodel android-jetpack androidx

9
推荐指数
4
解决办法
2354
查看次数

为什么我仍然收到“无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码中”

我正在使用 Kotlin 和 Dagger 2 开发一个 Android 项目。我有一个NetworkModule它应该提供一个 Retrofit 的单例实例。我在其中定义了所有这些提供程序功能。

下面的所有代码片段都在里面NetworkModule

@Module
object NetworkModule {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想提供HttpRequestInterceptor,这是我尝试过的:

@Provides
@JvmStatic
internal fun provideHttpRequestInterceptor(): Interceptor {
    // compiler error: Cannot inline bytecode built with JVM target 1.8 into 
    // bytecode that is being built with JVM target 1.6, 
    // please specify proper '-jvm-target' option

    return Interceptor { chain ->
        val original = chain.request()
        val requestBuilder = original.newBuilder()
        val request = requestBuilder.build()
        chain.proceed(request)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是上面的代码总是给我这个编译器错误: …

android kotlin dagger-2

8
推荐指数
1
解决办法
5924
查看次数

Kotlin:无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 的字节代码中

我在尝试向我的 kotlin spring 项目添加一些依赖项时遇到问题。我使用 spring boot 初始化程序来运行一个基本项目。

我的问题:如果我取消注释 jackson 或 Koin 依赖项,那么我的构建会失败,标题中提到的是以下是 build.gradle.kts 文件:

    import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("plugin.jpa") version "1.3.31"
    id("org.springframework.boot") version "2.2.0.M4"
    id("io.spring.dependency-management") version "1.0.7.RELEASE"
    kotlin("jvm") version "1.3.31"
    kotlin("plugin.spring") version "1.3.31"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8

val developmentOnly by configurations.creating
configurations {
    runtimeClasspath {
        extendsFrom(developmentOnly)
    }
}

repositories {
    mavenCentral()
    maven { url = uri("https://repo.spring.io/snapshot") }
    maven { url = uri("https://repo.spring.io/milestone") }
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    runtimeOnly("com.h2database:h2") …
Run Code Online (Sandbox Code Playgroud)

gradle kotlin

5
推荐指数
1
解决办法
7590
查看次数