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 | Kotlin 测试