Android Studio 3.0 Unresolved reference: SupportedLanguages for AIConfiguration class in Dialogflow(

Posted

技术标签:

【中文标题】Android Studio 3.0 Unresolved reference: SupportedLanguages for AIConfiguration class in Dialogflow(api.ai)【英文标题】: 【发布时间】:2018-05-03 14:35:00 【问题描述】:

我正在通过对 Dialogflow 代理的查询,在 Kotlin 中构建一个聊天机器人 android 应用。我使用该存储库中提供的Dialogflow android client github repository 自述文件和sample app 作为构建应用程序的基础。正如上述来源中所引用的,AIConfiguration.SupportedLanguages 的 java 代码可以正常工作:

import ai.api.android.AIConfiguration;
.....
private void initService(final LanguageConfig selectedLanguage) 
final AIConfiguration.SupportedLanguages lang = AIConfiguration.SupportedLanguages.fromLanguageTag(selectedLanguage.getLanguageCode());
.....

你可以找到这个here的完整用法。

当我在 Kotlin 中实现它时:

import ai.api.android.AIConfiguration
....
    private fun initService() 
        //final AIConfiguration.SupportedLanguages lang = AIConfiguration.SupportedLanguages.fromLanguageTag(selectedLanguage.getLanguageCode());
        val config = AIConfiguration(CLIENT_ACCESS_TOKEN,
                AIConfiguration.SupportedLanguages.EnglishGB,
                AIConfiguration.RecognitionEngine.System)
....

在 Android 3.0 中,AIConfiguration.SupportedLanguages 出现“Unresolved reference: SupportedLanguages”的 gradle 错误。 AIConfiguration.RecognitionEngine 解决得很好。为什么会出现这个问题?我可以实施什么解决方案/变通方法?

我的上级build.gradle文件:

apply plugin: 'com.android.feature'

android 
    compileSdkVersion 27
    baseFeature true
    defaultConfig 
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    buildToolsVersion '27.0.1'
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    


dependencies 
    api 'com.android.support:appcompat-v7:27.0.0'
    api 'com.android.support:design:27.0.0'
    api 'com.android.support.constraint:constraint-layout:1.0.2'

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'ai.api:sdk:2.0.7@aar'
    compile 'ai.api:libai:1.6.12'
    //compile project(':ailib')

    application project(':app')
    feature project(':chatbot')

我的模块build.gradle文件:

apply plugin: 'com.android.feature'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android 
    compileSdkVersion 27
    defaultConfig 
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    buildToolsVersion '27.0.1'
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    


dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    implementation project(':base')

    //add the google gson library
    compile 'com.google.code.gson:gson:2.8.2'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'


【问题讨论】:

在 Java 中调用 ai.api.android.AIConfiguration.SupportedLanguages 可以正常工作。在 Kotlin 1 中,我为上述代码找到的解决方案是在代码中使用 ai.api.AIConfiguration.SupportedLanguages,它可以正确解析。但是ai.api.android.AIConfiguration 实现了ai.api.AIConfiguration,所以为什么会出现这个问题我完全不明白。 【参考方案1】:

我发现一个可行的解决方法是使用ai.api.AIConfiguration.SupportedLanguages,它正在解析,而不是ai.api.android.AIConfiguration.SupportedLanguages,正如问题中提到的那样,它在Android Studio 3.0 的kotlin 中没有解析。

但是,调用 ai.api.android.AIConfiguration.SupportedLanguages 在 Java 代码中可以正常工作,在这种情况下,它可以在 Android Studio 3.0 中正确解析。既然ai.api.android.AIConfiguration实现了ai.api.AIConfiguration,为什么会出现这个问题令人费解!

【讨论】:

【参考方案2】:

只需使用这一行而不是上一行 -

ai.api.AIConfiguration.SupportedLanguages.English,

【讨论】:

以上是关于Android Studio 3.0 Unresolved reference: SupportedLanguages for AIConfiguration class in Dialogflow(的主要内容,如果未能解决你的问题,请参考以下文章

Android - Android Studio 3.0去掉方法参数提示

Android Studio 3.0 安装注意点

Android Studio 3.0 | Kotlin 测试

Android Studio 3.0指定apk输出

Gradle plugin 3.0 & Android Studio 3.0

Android Studio 3.0找不到Android Device Monitor