LoginSignup
4
1

More than 3 years have passed since last update.

Android で annotation が見つからない件 - シンボル annotation を解決できません。

Posted at

はじめに

最近、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 してるよ?

app/build.gradle
    implementation 'androidx.appcompat:appcompat:1.1.0'

試しに annotation 直接指定してみるか。

app/build.gradle
    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 すると直りましたとさ。
めでたしめでたし。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1