Help us understand the problem. What is going on with this article?

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

はじめに

最近、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 すると直りましたとさ。
めでたしめでたし。

ryo-hashioka
大阪在住のプログラマ。 AWS や GCP のクラウド含む Webアプリ開発や Android アプリ開発をしています。 趣味で Arduino を使って遊んでたりもします。 ##言語 Java, C#, Kotlin, PHP, Javascript, Python, etc...
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした