1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windowsのターミナルでは環境変数の指定方法に気をつけろ

1
Posted at

起きた事象

Flutterでアプリケーションを作っていた。
ログインのためにFirebase認証を使っていて、Webでは認証成功するのに、Androidアプリでデバッグした途端、以下のエラーになった。

PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10:, null, null)

どうやら各アプリでFirebase認証を使うには、当該アプリの署名証明書SHA-1を取得する必要がある、ということが分かった。

署名証明書はどう取得するのか調べてみたところ、公式ドキュメントにたどり着いた。

https://developers.google.com/android/guides/client-auth?hl=ja

公式ドキュメントには、デバッグ用アプリケーションについて、Windowsでは以下のように取得すると書いてあった。

keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

その通りにCursorのターミナルで実行してみたところ...

keytoolエラー: java.lang.Exception: キーストア・ファイルは存在しません: %USERPROFILE%\.android\debug.keystore
java.lang.Exception: キーストア・ファイルは存在しません: %USERPROFILE%\.android\debug.keystore
        at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:920)
        at java.base/sun.security.tools.keytool.Main.run(Main.java:419)
        at java.base/sun.security.tools.keytool.Main.main(Main.java:400)

???

試しに、ファイルエクスプローラーに%USERPROFILE%\.androidと打ってみると、debug.keystoreは存在していた。

?????????

原因と解決策

どうやら、上記のコマンドはWindowsのコマンドプロンプト向けの書き方だったようだ。
自分はCursorのターミナルにPower Shellを使っていたため、エラーになった。

そもそもUSERPROFILEは環境変数として定義されている。
コマンドプロンプトでは%USERPROFILE%の形式で環境変数を取得できるが、Power Shellでは$env:USERPROFILEと書く必要があるらしい(参考: https://qiita.com/naka_toshinori/items/c9ea1efc89686ed3d018)。

Power Shellで%USERPROFILE%と書いても、ただの文字列として認識され、%USERPROFILE%\.android\debug.keystoreを探しに行った結果、そんなファイルは存在しない!と怒られたということだ。
試しに、Power Shellで以下のようにコマンドを打つと、成功した。

keytool -list -v -alias androiddebugkey -keystore $env:USERPROFILE\.android\debug.keystore

また、コマンドプロンプトでは、公式ドキュメントの書き方通りで問題なく動いた。

Mac/Linuxでの開発が盛んなアプリケーションやライブラリの場合、Windowsでのセットアップ方法については、それがPower Shellでの書き方なのか、コマンドプロンプトでの書き方なのか明記されていないことが多々ある気がする。
今後同じようなパターンに遭遇する可能性があり、今回の件をしっかり記憶に留めたい。

1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?