はじめに
最近、Google Speech-to-Text を使った音声アプリを Android で作る機会がありました。
Google さんの公式ドキュメントから Android のサンプルリンクがあり、
そのまま「えいっ!」ってコピペしてみると、「シンボル annotation を解決できません。」と怒られました。
多分、上記サンプルに関わらず、コピペしてコマッタ…って人もいるかとおもいます。
パッと検索してみても annotation をキーワードに指定するとなかなか出てこなかったので記事にしてみました。
問題のコード
import android.support.annotation.NonNull;
先に結論
下記のように書き換えると、とりあえず動きました。
import androidx.annotation.NonNull;
細かい所まで見れてないですが、気になる人は annotation のリリースノート 等、参照ください。
とりあえず今作ってるアプリが動いたらいいや…(おいっ!)
結論に至った経緯
Annotation は appcompat に含まれる
annotation って何者?って調べると、appcompat に含まれているみたいです。
下記、参考の URL を見ても appcompat を implementation していれば行ける模様。
【参考】
https://qiita.com/que9/items/34469b1164ec59f0ebbe
https://developer.android.com/studio/write/annotations?hl=ja
でも、appcompat implementation してるよ?
implementation 'androidx.appcompat:appcompat:1.1.0'
試しに annotation 直接指定してみるか。
implementation 'com.android.support:support-annotations:28.0.0'
やっぱダメ。
(直接 jar を配置したらビルド通ったのですが、なんか違う!と思ったのでここには書きません。)
Android は AndridX になっていた
なんか appcompat の仕様でも変わったのかな?と思って調べてみると、やっぱ変わってた。
私は下記2つを参考にしました。
https://qiita.com/toastkidjp/items/4b851046c19af6e55995)
https://developer.android.com/jetpack/androidx/migrate?hl=ja
ということで、あるべき androidx の annotation を import すると直りましたとさ。
めでたしめでたし。