ラベル Android Studio の投稿を表示しています。 すべての投稿を表示
ラベル Android Studio の投稿を表示しています。 すべての投稿を表示

2025/11/17

Android Studioから起動するエミュレータにコマンドラインオプションを設定する

Android Studioから起動するエミュレータにコマンドラインオプションを設定できないかと検索していたら

How to pass command line options to the emulator in Android Studio? - Stack Overflow

に答えがあったので。


起動オプションを設定するには環境変数「studio.emu.params」に値を設定します。注意点としてはスペースを使用せず、「,」 (カンマ)で繋いでいきます。

例えばタイムゾーンを東京にする場合コマンドラインオプションでは

-timezone Asia/Tokyo

と「-timezone」と「Asia/Tokyo」の間にスペースありますが、環境変数で設定する場合、スペースをカンマで置換した形

$ set studio.emu.params=-timezone,Asia/Tokyo

にします。


Android Studio Otter | 2025.2.1 では https://android.googlesource.com/platform/tools/adt/idea/+/refs/tags/studio-2025.2.1/android/src/com/android/tools/idea/avdmanager/AvdManagerConnection.kt#308

で環境変数を取得して設定していました。コミットログを見ると7年以上前からあったらしい。

Diff - dd839c9436e425381256cb2e984305c09a7fbbd9^! - platform/tools/adt/idea - Git at Google

もっと早く知りたかった


2022/02/03

APK内のclasses.dexが圧縮されない

Google PlayにアップロードするときはAndroid App Bundle形式になってきてて気にならなかったりするのでメモがてら。

AGP 4.2.0-alpha07で変更されたらしく、minSdkが28以上で作成されたAPK内のclasses.dexは圧縮されません。

https://issuetracker.google.com/issues/199427345?pli=1#comment3


Android Gradle pluginのリリースノートには当初載ってなかったらしく追加されています。

DEX files uncompressed in APKs when minSdk = 28 or higher

以前のようにclasses.dexを圧縮したい場合は↑のリンク先にもあるようにbuild.gradleに

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

を追加します。

2021/11/03

Android 12のクイック設定にWi-Fiとモバイルデータを追加する (エミュレータでの話)

2022/08/18 追記

Android 13ではクイック設定のWi-Fiとモバイルデータは分離できなくなりました。

変更時のコミット

https://android.googlesource.com/platform/frameworks/base/+/29c2e807e010ca0229e9db1d036649f3b7c21134%5E%21/

2022/08/18 追記ここまで

以下Android 12での内容です。


ここではAndroid Studioのエミュレータを使用しています。

実機では確認していませんので実機で設定を変更される方は自己責任でお願いします。

2021/11/12 追記: reddit への投稿によると実機でもできるようです。

2022/02/11 追記 ここから

2022/02/08 (日本時間) にリリースされた Pixel 3のアップデート (ビルド番号 SP1A.210812.016.C1) では2021/11のセキュリティパッチが取り込まれていないので、以前と同じ方法

$ adb shell settings put secure sysui_qs_tiles "wifi,cell,$(settings get secure sysui_qs_tiles)"

のみでWi-Fiとモバイルデータをクイック設定に追加できます。

追記ここまで


Android 12になってからクイック設定のWi-Fiとモバイルデータが1つにまとめられインターネットとなりました。Android 12にアップデートした直後は

9To5Google - How to bring back the Wi-Fi and mobile data toggles on Android 12

XDA - Google explains the reasoning behind Android 12’s Internet Quick Settings tile

で紹介されている方法でできていたのですが、2021/11のセキュリティパッチを適用するとこの方法が使えなくなるようです。

コミットログを見てみると

Pixel 3a, Pixel 3a XL, Pixel 4, Pixel 4a, Pixel 4a (5G), Pixel 4 XL, Pixel 5, Pixel 5a (5G)
https://android.googlesource.com/platform/frameworks/base/+/39627225836a334d785e2176ca517effe806ec3a

Pixel 6, Pixel 6 Pro
https://android.googlesource.com/platform/frameworks/base/+/a8c61c93a4adc401781424ff87167c8f2b02c332

でクイック設定の表示する項目でWi-Fi、モバイルデータがあった場合、削除するようになっています。

9To5Google、XDAで紹介された方法ではAndroid Studioのエミュレータ (Android 12 ビルド番号 SE1A.211012.001) ではWi-Fi、モバイルの追加ができなかったので、エミュレータも恐らくこのパッチが適用されているのだろう、ということで差分からクイック設定にWi-Fi、モバイルデータを追加できないか確認してみます。


差分を見ると FeatureFlags というのが追加されています。さらに

https://android.googlesource.com/platform/frameworks/base/+/a8c61c93a4adc401781424ff87167c8f2b02c332/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java#519

https://android.googlesource.com/platform/frameworks/base/+/a8c61c93a4adc401781424ff87167c8f2b02c332/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java#124

で featureFlags.isProviderModelSettingEnabled()

https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-12.0.0_r12/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java#107

は FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL) を返しているだけなので

https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-12.0.0_r12/core/java/android/util/FeatureFlagUtils.java#89

を false で返すことができれば、Wi-Fi、モバイルデータが削除されずに済みそうです。


最初に SETTINGS_PROVIDER_MODEL (= settings_provider_model)の値を確認。

$ adb shell settings get global settings_provider_model

エミュレータでは null (キーが無い) でした。

次に SETTINGS_PROVIDER_MODEL の値を false に設定します。

$ adb shell settings put global settings_provider_model false

次にクイック設定にWi-Fi (wifi) とモバイルデータ (cell) を追加。

$ adb shell settings put secure sysui_qs_tiles "wifi,cell,$(settings get secure sysui_qs_tiles)"

コマンド実行後、クイック設定を開く。(Wi-Fi (wifi) とモバイルデータ (cell) が追加されている)
並び替えたい場合ここで行う。

最後に SETTINGS_PROVIDER_MODEL の値を元に戻す。(エミュレータでは SETTINGS_PROVIDER_MODEL のキーは無かったので削除)

$ adb shell settings delete global settings_provider_model

SETTINGS_PROVIDER_MODEL を削除したのは設定アプリでこの値を参照しているのがいくつかあったので初期状態に戻すためです。


補足: SETTINGS_PROVIDER_MODEL のキーを削除しているので、端末の再起動、クイック設定の並び替えを行うとWi-Fi、モバイルデータの項目が消えます。


最後にもう一度

実機では確認していませんので実機で設定を変更される方は自己責任でお願いします。

参考: Connectivity User Interface


2019/10/21

Android 10でのMIME typeの定義が更新されてた

Android 10でMIME typeの定義が更新されているのでストレージアクセスフレームワーク (SAF)の ACTION_OPEN_DOCUMENT 等でMIME typeを設定している場合、見直したほうがいいかもしれません。

Android 9までは


で定義されていたのがAndroid 10では


にある


で定義されるようになりました。


コミットログは↓参照
https://android.googlesource.com/platform/libcore/+/d5e73ac1a2c92dd929e1462b63d6e36509813486


#Android 10からは "font/*" の指定が効くようになったのでTrueTypeフォント、OpenTypeフォントのファイルのみ選択させることができますね。

2018/10/08

Android Studioのレイアウトエディタのプレビューのフォントを日本語フォントに

Android Studioのレイアウトエディタのプレビューのフォントが気になる、というのを見たので中華フォントで表示されているプレビューを日本語フォントになるようにしてみます。

Windows 8.1 (64bit), Android Studio 3.2 (Windows 64-bit)の場合、修正するファイルは
C:\Program Files\Android\Android Studio\plugins\android\lib\layoutlib\data\fonts\fonts.xml
になります。

2018/10/12 追記
ファイルを編集すると、Android Studioのアップデートに失敗します。必ずバックアップを取っておいてください。また、Android Studioのアップデートは元のファイルに戻してから行うようにしてください。
追記ここまで

でパッチ。 日本語で使用するフォント(<family lang="ja">)を中国語(簡体字)(<family lang="zh-Hans">), 中国語(繁体字), 中国語(注音符号)(<family lang="zh-Hant zh-Bopo">)より前にもってきます。

XML修正前は中華フォントで表示されていたのが


XML修正後は日本語のフォントで表示されるようになりました。

2018/09/26

AndroidXへ移行後に出たNot annotated parameter overrides @NonNull parameterという警告

はじめに
警告の抑止方法がこれで合っているのかは分かりません。


Android Studio 3.2がリリースされたので"Migrate to AndroidX..."を使ってサポートライブラリからAndroidXへ移行したところ、


Not annotated parameter overrides @NonNull parameter
This inspection reports problems related to @Nullable and @NotNull annotations usage configured in Constant conditions & exceptions inspection.

という警告が。対応としては、

File -> Settings...
-> Editor -> Inspections
-> Java -> Probable bugs -> Constant conditions & exceptions


右側の"Configure annotations"をクリックして "Nullable/NotNull Configuration"を表示後、


Nullable annotations, NotNull annotationsの「+」をクリックしてNullable (androidx.annotation), NonNull (androidx.annotation)を追加



androidx.annotation.Nullable, androidx.annotation.NonNullをチェック後、OKをクリック


で警告が出なくなった。