Android Kotlin MLKit翻译库异常:翻译文本为Null且日志报版本警告
MLKit文本翻译返回Null问题排查与解决
我在Android Kotlin项目中使用MLKit进行文本翻译,运行时无直接错误,但翻译结果始终为Null,相关日志如下:
W/LibraryVersion: Failed to get app version for libraryName: shared-installation-id D/TransportRuntime.JobInfoScheduler: Scheduling upload for context TransportContext(cct, VERY_LOW, MSRodHRwczovL2ZpcmViYXNlbG9nZ2luZy5nb29nbGVhcGlzLmNvbS92MGNjL2xvZy9iYXRjaD9mb3JtYXQ9anNvbl9wcm90bzNc) with jobId=-653056373 in 86400000ms(Backend next call timestamp 0). Attempt 1 W/LibraryVersion: Failed to get app version for libraryName: shared-remote-config D/MLKit RemoteConfigRestC: Got remote config. I/TetheringManager: registerTetheringEventCallback:com.example.agrithonapp D/TransportRuntime.SQLiteEventStore: Storing event with priority=VERY_LOW, name=FIREBASE_ML_SDK for destination cct D/TransportRuntime.JobInfoScheduler: Upload for context TransportContext(cct, VERY_LOW, MSRodHRwczovL2ZpcmViYXNlbG9nZ2luZy5nb29nbGVhcGlzLmNvbS92MGNjL2xvZy9iYXRjaD9mb3JtYXQ9anNvbl9wcm90bzNc) is already scheduled. Returning... D/TransportRuntime.SQLiteEventStore: Storing event with priority=VERY_LOW, name=FIREBASE_ML_SDK for destination cct D/TransportRuntime.JobInfoScheduler: Upload for context TransportContext(cct, VERY_LOW, MSRodHRwczovL2ZpcmViYXNlbG9nZ2luZy5nb29nbGVhcGlzLmNvbS92MGNjL2xvZy9iYXRjaD9mb3JtYXQ9anNvbl9wcm90bzNc) is already scheduled. Returning... D/TransportRuntime.SQLiteEventStore: Storing event with priority=VERY_LOW, name=FIREBASE_ML_SDK for destination cct D/TransportRuntime.JobInfoScheduler: Upload for context TransportContext(cct, VERY_LOW, MSRodHRwczovL2ZpcmViYXNlbG9nZ2luZy5nb29nbGVhcGlzLmNvbS92MGNjL2xvZy9iYXRjaD9mb3JtYXQ9anNvbl9wcm90bzNc) is already scheduled. Returning... D/TransportRuntime.SQLiteEventStore: Storing event with priority=VERY_LOW, name=FIREBASE_ML_SDK for destination cct D/TransportRuntime.JobInfoScheduler: Upload for context TransportContext(cct, VERY_LOW, MSRodHRwczovL2ZpcmViYXNlbG9nZ2luZy5nb29nbGVhcGlzLmNvbS92MGNjL2xvZy9iYXRjaD9mb3JtYXQ9anNvbl9wcm90bzNc) is already scheduled. Returning...
排查与解决步骤
确认翻译模型已成功下载
MLKit离线翻译依赖对应语言对的模型,若模型未下载或下载失败,翻译会返回Null。添加模型下载监听,确认状态:val translatorOptions = TranslatorOptions.Builder() .setSourceLanguage(TranslateLanguage.ENGLISH) .setTargetLanguage(TranslateLanguage.CHINESE) .build() val translator = Translation.getClient(translatorOptions) val downloadListener = object : ModelDownloadListener { override fun onModelDownloaded(conditions: ModelDownloadConditions?) { // 模型就绪,可执行翻译 } override fun onModelDownloadFailed(conditions: ModelDownloadConditions?, e: Exception?) { e?.printStackTrace() // 打印下载失败原因 } } translator.downloadModelIfNeeded(ModelDownloadConditions.Builder().build()) .addOnSuccessListener { /* 下载完成回调 */ } .addOnFailureListener { it.printStackTrace() }校验输入文本合法性
确保传入翻译的文本非空且非空白,空输入会导致MLKit返回Null:val input = "需要翻译的文本" if (input.isBlank()) { // 处理空输入逻辑 return } translator.translate(input) .addOnSuccessListener { result -> // 处理翻译结果 } .addOnFailureListener { it.printStackTrace() }检查依赖与配置正确性
确认MLKit翻译依赖版本兼容,避免版本冲突:dependencies { implementation 'com.google.mlkit:translate:17.0.1' }同时确保
google-services.json已正确放置在项目根目录,且与Firebase项目绑定。处理日志中的警告信息
日志中Failed to get app version警告需确保AndroidManifest.xml中正确配置应用版本:<manifest ...> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" /> <application ...> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest>至于
TransportRuntime相关日志,属于Firebase传输组件的正常调度逻辑,不会影响翻译功能,可忽略。
内容的提问来源于stack exchange,提问作者Malhar
相关产品推荐
相关产品推荐

