syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

Android Studio 2020.3.1のアンインストール

Android Studio 4.2.xまでは、プロジェクトを読み込んでいないスタート画面にて、「Configure」ドロップダウンリストから「Import Settings」や「Export Settings」を実行できていました。
しかし、7月末にリリースされた新しいバージョン「2020.3.1 (Arctic Fox)」のスタート画面では「Import Settings」は一応あるものの、「Export Settings」が使えなくなっています。
(いちいち何らかのプロジェクトを開いた状態で、メニューの「File」→「Manage IDE Settings」から実行しなければならない)

2020.3.1では他にも使いづらくなった部分があるので、いったんアンインストールして古いバージョンに戻そうと考えましたが、ここで問題が発生。

コントロールパネルの「プログラムと機能」にはAndroid Studioのアイコンが登録されているんですが、アンインストールしようとすると、

[Window Title]
プログラムと機能

[Content]
Android Studio のアンインストール中にエラーが発生しました。既にアンインストールされている可能性があります。

[プログラムと機能] の一覧から Android Studio を削除しますか?

[はい(Y)] [いいえ(N)]

というエラーダイアログが表示され、アンインストールに失敗します。

これまでのバージョンは、インストールすると

uninstall.exe が作成されていました。

しかし、どうもAndroid Studio 2020.3.1 (Arctic Fox) をインストールしても、上記の場所には uninstall.exe が存在しないようです。
多分インストーラーのバグでしょう。それにしてもGoogleの連中はアンインストール作業をテストせずにリリースしているのか……
Android StudioIntelliJ IDEAをAndroid開発向けにカスタマイズしているだけにすぎないのに、相変わらず品質がひどいな……

とりあえず以下を手動削除。

もしかしたらレジストリなどにゴミが残っているかもしれませんが、この際仕方ない。
削除したいのはIDEだけで、Android SDK/NDKやエミュレーターはそのまま使うので、特にアンインストールはしません。

その後、以下から Android Studio 4.2.x のインストーラーをダウンロードして再インストールしました。

developer.android.com

最強のIDEは?

すべてのIDEを使ったことがあるわけではありませんが、最強候補はVisual StudioもしくはIntelliJ IDEAだと思います。
VSは個人開発や少人数開発であれば必要十分すぎる機能を持つCommunityエディションを無償で使えるのも大きい。ネイティブコード/マネージコードどちらでも自由に言語を選択して開発できます。IntelliJのCommunityエディションやAndroid Studioは無償で使えるものの、対応している言語はJava/Kotlin/ScalaとJNIのC/C++だけで、純粋なC/C++対応のCLionや、.NET対応のRiderなどは有償製品のみです。

Android Studio (IntelliJ IDEA) はVisual Studioよりも検索・置換機能の動作が軽快で、使いやすい部分もあるんですが、前述のようなアホな仕様やバグが多々あるせいで、総合的な最強IDEの座に君臨しているのは未だVisual Studioであると断言できます。
あとMSBuildに比べるとGradle + CMakeは絶望的に使いづらい。動作も重いし、大規模プロジェクトになるほど実感するんじゃないでしょうか。

IntelliJはデフォルトのオートフォーマットもクソだと思います。調教しないと使い物にならない。ただ、オートフォーマットに関してはVisual Studioも独特のクセがあってイマイチです*1
Visual Studio 2017以降はEditorConfigに対応しているので、プロジェクト(実際はソースツリー)ごとにフォーマット設定をポータブルに管理することもできるようになっています。一方、IntelliJのEditorConfig対応は中途半端で、現状まともに動作しないので、IntelliJ固有のスタイル設定XMLファイルを別途プロジェクトのリポジトリにコミットしておく必要があります。

コード補完やツールヒントはVisual Studioが最強です。VS2012あたりですでに完成の域に到達していると思いますが、なぜか他のIDEは全然追従できていないですね。C/C++の静的解析ツール (lint) はMSVCもClangも一長一短ですが、Visual Studio 2019以降は設定によりClang-Tidyを有効にすることもできます。

スペルチェッカーに関しては標準でサポートしているIntelliJに軍配が上がります。VSは一応サードパーティ製のアドオンがあるものの、まともに使えません。

デバッガーについてはどちらも遜色ないほど強力ですが、VSのウォッチ式やイミディエイトウィンドウはネイティブコードではうまく機能しないことがあります。一方、IntelliJのEvaluate Expressionでは外部リンケージのシンボルにどのコンテキストからでもアクセスできるので、かなり強力です。とはいえ、Evaluate Expressionもネイティブコードではうまく機能しないことがあります。

developer.android.com

デバッグメッセージの管理はAndroidのLogcatのほうが総じて優秀です。Android端末側でログデータを保持しているので、デバッガーをアタッチすることなく、adbまたはAndroid Studioで端末に接続するだけでログを閲覧することができます。各レコードの出力時刻も自動的にミリ秒単位で記録されるので、パフォーマンス測定やシーケンスの整合性チェックにも使えます。
Visual StudioはWin32のOutputDebugStringW()や.NETのSystem.Diagnostics.Debug.WriteLine()などによるデバッグメッセージ出力を「出力ウィンドウ」で確認できますが、そのためにはアプリケーションをデバッグ実行してVisual Studioデバッガーをアタッチしておく必要があります。しかしデバッグ実行はかなり重くなるので、単純にログを閲覧するだけであれば「DebugView」のようなスタンドアロンのツールを使う方法もあります。DebugViewはUIが古臭くて使いづらい部分もあるのですが、アプリケーションの動作が極端に重くなるようなことはなく、レコードの出力時刻をミリ秒単位で表示することもできます。

なお、VSのAndroid対応は中途半端でバグも多く、特にネイティブコードとマネージコードを併用する際にデバッガーがまともに機能しないため、Android開発に関してはAndroid Studioを使わざるを得ません。

*1:Visual StudioではC++C#も、インラインで記述された複数行のラムダ式を含むコードをオートフォーマットすると、インデントが分かりづらくなります。そもそもラムダ式で書くようなコードは一般的に1行に収めるべきではありますが。