- 1. HMS Coreのバージョンと各HMS Kitとの関係
- 2. コマンドラインでAndroidアプリをビルドして起動し直す
- 3. [Android] RecyclerViewを用いてSticky Headerを実装する
- 4. 【Android】Emulatorが起動しない不具合の解決法
- 5. Android: dexOptions.preDexLibraries オプションは削除しよう
- 6. Android Studio と IBM Security Verify SDKをはじめて触ってみる④
- 7. Jetpack Composeを触るときにInteractive Previewが便利
- 8. Android Studioをアップデートしたら文字列検索で文字化けしてしまった
- 9. 【モバイル対応】URLでアプリを開く
- 10. Androidでflutterのsign_in_with_appleを使ったときにactivityが起動できない対処法
- 11. PhigrosのGoogle Play Store版からTapTap版へと移行する大まかな手順
- 12. 【kotlin】NestedScrollViewで最下部までスクロールした際に処理を実行する
- 13. PhotoViewとViewPager2を使って、Twitterの画像ビューワを再現する
- 14. Background表示をマスキングする
- 15. 【kotlin】同時タップでアプリが強制終了しない様にする
- 16. 【Kotlin】must be locked before it can be used to compute a classpath! と表示されコンパイル出来ない場合の対処法
- 17. 【Android】UI テストの基本と処理の待ち合わせ方法
- 18. Android Studioを日本語化する(トラブルシューティング付き)
- 19. Accompanist のユースケース
- 20. View.onSaveInstanceState()を簡単に実装する方法
HMS Coreのバージョンと各HMS Kitとの関係
HMS Coreの各バージョンで利用できるHMS Kitをまとめました。
### App Services
|HMS Kit|HMS Core 2.4以上|HMS Core 3.0以上|HMS Core 4.0以上|HMS Core 5.0以上|HMS Core 6.0以上|備考|
|:—:|:—:|:—:|:—:|:—:|:—:|:—|
|[Account Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/introduction-0000001050048870)|〇|〇|〇|〇|〇||
|[Ads Kit](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/publisher-service-introduction-0000001070671805)|||〇|〇|〇|〇|〇||
|[Analytics Kit](https://developer.hua
コマンドラインでAndroidアプリをビルドして起動し直す
“`
export APPLICATION_ID=com.example.myapplication
./gradlew assembleDebug; adb install -r app/build/outputs/apk/debug/app-debug.apk; adb shell am force-stop $APPLICATION_ID; adb shell monkey -p $APPLICATION_ID -c android.intent.category.LAUNCHER 1
“`たまにAndroid Studioのことが信じられなくなることがあって、そういう時はコマンドラインで一通りやりたくなる。アプリを起動する時に、Acitivityを指定する必要があるのかなと思ってたけど、monkeyというコマンドがあるのを知らなかった。
[Android] RecyclerViewを用いてSticky Headerを実装する
##はじめに
RecyclerViewをとItemDecorationクラスを用いて、Sticky Headerを実装します。「Epoxy」等なのどライブラリを利用することで、Sticky Headerを実装することは可能らしいですが、今回は使い慣れてるRecyclerView用いて実装します。
##そもそもSticky Headerとは?
Sticky Headerとはこのような動きをするリストです。
![2021-08-01_22_24_09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1830512/d34c3b02-43b6-b5c5-2971-2154cda28294.gif)## 大まかな流れ
RecyclerViewとRecyclerViewのItemDecorationクラスを用いて実装します。
1. StickyHeader描画用のインターフェースの定義
* RecyclerViewのAdapterクラスに上記インターフェースを継承させる
* Adapterクラスのイ
【Android】Emulatorが起動しない不具合の解決法
# 不具合内容
API 29/30でAndroid Emulatorを起動しようとすると下記のような不具合発生。
![error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/16943c68-97d6-7684-f1ce-409879fdfbe4.png)
![error_detail_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/7d75f877-1667-401b-4286-1aa794d7af09.png)# 解決法
`C:\Users\\.android`フォルダ内に`advancedFeatures.ini`を追加し、以下のように記述することで解決。 “`advancedFeatures.ini
Vulkan = off
GLDirectMen = on
“`参考サイト:https://stackoverflow.com/questions/
Android: dexOptions.preDexLibraries オプションは削除しよう
Android Gradle Plugin 7.0.0 から、dexOptions が Deprecated になりました。
> Using dexOptions is obsolete.
Android Gradle Plugin 7.0.0-alpha15 以上では、エラーメッセージがわかりやすくなり、以下のメッセージとなるようです。
* https://issuetracker.google.com/issues/183295952#comment4
> DSL element ‘dexOptions’ is obsolete and should be removed.
It will be removed in version 8.0 of the Android Gradle plugin.
> Using it has no effect, and the AndroidGradle plugin optimizes dexing automatically.D8 が dexOptions を参照しなくなったため、preDexLibraries は指定する必要
Android Studio と IBM Security Verify SDKをはじめて触ってみる④
# はじめに
②の記事で、Authenticator Demoアプリを使ってQRCode読み取ったあと、デバイスの検証に進むことができませんでした。なぜデバイスの検証に進めないのか調べてみました。
[Android Studio と IBM Security Verify SDKをはじめて触ってみる②](https://qiita.com/fitz/items/baadc466055e9dbd00ef)![androidStudio (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/9deed720-6f4c-f0e2-cc19-2d9fdb18204d.png)
オーセンティケータの状態を、/v1.0/authenticators APIを用いて比較してみました。
# 1.IBM Security VerifyアプリでQRCodeを読み取った場合
まず最初に、IBM Security Verifyアプリを使ってQRCodeを読み取り、指紋認証まで実施したときのオーセンティケ
Jetpack Composeを触るときにInteractive Previewが便利
こちらに書いてある内容です。
https://developer.android.com/jetpack/compose/preview?hl=ja#interactive
Jetpack Composeを利用するときに、Interactive Previewを利用すれば、アプリをビルドすることなくタップやアニメーションなどの動作確認ができます。
ドキュメントに掲載されている以下の例では、Android Studio内でボタンをタップしたときの挙動を確認することができます。![Interactive Preview](https://developer.android.com/images/jetpack/compose/preview-interactive.gif?hl=ja)
# 設定方法
1. Jetpack Composeに対応しているAndroid Studio(Arctic Fox以上)をダウンロードします
2. 設定を開き、 `Experimental`→`Jetpack Compose`の`Enable interactive and animation p
Android Studioをアップデートしたら文字列検索で文字化けしてしまった
Preferances→Appearance→Use custom fontにチェックをつける
![スクリーンショット 2021-08-04 11.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694541/da0151aa-f6d9-38d6-4935-aff454df58f5.png)
【モバイル対応】URLでアプリを開く
# 背景
スマホのブラウザで閲覧するWebアプリケーションに配置されたボタンから
インスタグラムの**アプリ**に遷移する要件があった。
しかし、ただの https://www.instagram.com/ をhrefに設定しても、アプリには遷移されない場合があった。
そこで、どうしたらアプリが開くURLになるか調べた。# URLでアプリを開く、とは
> 「入力されたURLを画面遷移の情報に変換し、その結果に従って画面遷移する」という処理が組み込まれているアプリに対して、URLを入力すること引用:[「URLでアプリを開く」を丁寧に深堀りしていく](https://note.com/toridori_inc/n/nb7237a217a51)
それらは**ディープリンク**とも呼ばれている。
そして、そのディープリンクにはいくつか種類がある。# Custom URL Scheme
今回の要件で必要なインスタグラム アプリへの遷移は
**Custom URL Scheme**が対応している。これは、このディープリンクを踏むと、該当するアプリが端末にインストール
– されて
Androidでflutterのsign_in_with_appleを使ったときにactivityが起動できない対処法
こんにちは。[virapture株式会社](https://virapture.com)の[もぐめっと](https://mogmet.com)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/ce84b8ec-2a7f-2fb0-48b6-561bc0cc32f0.jpeg)倉庫を使っておしゃれなカフェ空間にしているcafe SoulTreeというところでの一枚です。
空間もおしゃれで、昔、ゆとりですがなにかという番組でも使われていました。
駅から離れているのに結構人気スポットなので二子玉デートに使うといいと思います。https://cafesoultree.jp/
本日はタイトルの通り、sign in with appleをしようとしたらactivityが起動できなくて困ったことがあったので対処法を記載しておきます。
実装方法に関しては下記記事を参考に実装しました。
https://medium.com/flutter-jp/sign-in-with
PhigrosのGoogle Play Store版からTapTap版へと移行する大まかな手順
# TL;DR
– できないのは署名の問題だからLuckyPatcherでチェック無効化しよう***
# 環境
– Android(11 バージョンは関係無いはず)
– Phigros(リンク無いです…) 1.6.9
– TapTap
– (以下入れてない人はリンクから導入してください)
– [Lucky Patcher](https://www.luckypatchers.com/download/)
– APKComboでそのままインストールする時に、署名がだめですみたいなエラーが出る( 出てなくても試してみても良いかもね )
– PCは必要ないです***
# 具体的な手順
## Lucky Patcherで署名チェックを無効化
まずLucky Patcherを開いてください。
その後、上の虫眼鏡アイコンを押して `Phigros` と検索してください。
一番のあたりに1.6.9のPhigrosが出るはずなのでそれを押してください。
パッチのメニューを開いて、
`Re-sign with original signature for android
【kotlin】NestedScrollViewで最下部までスクロールした際に処理を実行する
“`
//Fragment
it.scrollView.setOnScrollChangeListener { v, _, scrollY, _, _ ->
it.isScrolled = (v as ViewGroup).getChildAt(0).bottom <= (scrollY + v.height) } //XML
“`
![ダウンロード.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694541/d3f19f95-ada1-5ae4-cb01-f65861a3d8eb.gif)
拡張関数にすれ
PhotoViewとViewPager2を使って、Twitterの画像ビューワを再現する
# この記事は
AndroidのTwitter公式アプリの複数枚の画像を閲覧する画面を自分のAndroidアプリで再現する方法を紹介します。[PhotoView](https://github.com/Baseflow/PhotoView)を使いますが、操作性を同じにするために、少し改造しています。
# Twitterアプリの画像ビューワの要件
まず、Twitterアプリの画像ビューワの要件を整理します。
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/334798/c39d63a7-8c8e-6815-2992-1bbec9fe4602.gif)
1. 左右スワイプで表示画像を切り替える
1. ピンチイン/ピンチアウト操作で表示を拡大縮小できる
1. 画像を拡大しているときは、ドラッグ操作で表示位置を変更できる他にも、画像を拡大している時の表示位置変更と表示画像切り替えについての要件があるのですが、そちらは実装方法を解説していく中で説明します。
# 使用ライブラリ
#
Background表示をマスキングする
こんなマスキングがしたい。
![Screen Shot 2021-08-03 at 16.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/66e14324-1277-3f28-8a84-168d0b763414.png)非表示にしたいActivity内で下記を追加する。
“`kotlin
activity.window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
“`全画面で対応したい場合は`Application.ActivityLifecycleCallbacks`を実装したActivity内でこうする。
“`kotlin
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
super.onActivityCreated(activity, savedInstanceS
【kotlin】同時タップでアプリが強制終了しない様にする
Androidではデフォルトでボタンの同時押しを許容する設定になってしまっている。
全画面に同時タップを出来ない様に反映するにはAndroidManifest.xmlのテーマに下記スタイルを適用する。
画面毎ボタンの同時押し禁止を実装するには、下記スタイルをレイアウトに適用すればOK。“`
- false
“`
“`- false
“`[参考URL](https://www.ithack.info/button/)
【Kotlin】must be locked before it can be used to compute a classpath! と表示されコンパイル出来ない場合の対処法
解決策①
gradle.properties内のconfigureondemandをFalseにする。
org.gradle.configureondemand=false解決策②
Build.gradle.kts→Build.gradleに変更する。
【Android】UI テストの基本と処理の待ち合わせ方法
## やりたいこと
以下のようなアプリに対して Espresso を使った UI テストを作成します。
(リポジトリは[こちら](https://github.com/yudai0308/ui_test_sample))– ユーザー名を入力してログインできる
– ユーザー名が入力されていないと注意メッセージが表示される
– ログインには3秒かかる
– ログイン後、メッセージが表示される| 初期画面 | ユーザー名なしでクリック |
| :-:| :-: |
| ![device-2021-08-01-173949.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238891/bfc19835-0bac-397f-0f44-aef715ddcb32.png) | ![device-2021-08-01-174008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238891/c681db21-fbfd-f0
Android Studioを日本語化する(トラブルシューティング付き)
# はじめに
Android Studioを日本語化する手順をトラブル・解決方法と合わせて記載します。
# 環境
* macOS 11.4
* Android Studio Arctic Fox | 2020.3.1# 日本語化手順
## Android Studioをインストールする。
↓からダウンロードしてインストールします。
https://developer.android.com/studio?hl=ja
## 日本語化プラグインをインストールする。
### 【トラブル】日本語化プラグインが見つからない。
Android Studioで日本語化プラグインを検索しても出てきません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342629/a4cfa828-23f5-8d54-27e5-dc93cb9e6c14.png)
### 【解決方法】JET BRAINS Marketpalceからダウンロードしてインストールする。
下記リンクから「Japan
Accompanist のユースケース
**2021/8/5 v0.16.0 で追加されたライブラリを追加しました**
Jetpack Compose を使うプロジェクトでは使うことになるであろう Accompanist とは何なのか、Accompanist は何ができるのかを書いていこうと思います。(v0.16.0 時点)
## Accompanist とは?
Accompanist は、Jetpack Compose で一部の API を使いやすくしたり、Android View にある機能を Compose でも使えるようにしたライブラリのグループです。
Accompanist は複数あるライブラリのグループで、v0.16.0 時点で以下のライブラリがあります。
| Library | package |
|—-|—-|
|Inset|com.google.accompanist:accompanist-insets:<version>
com.google.accompanist:accompanist-insets-ui:<version>|
|System
View.onSaveInstanceState()を簡単に実装する方法
# 概要
Android の [onSaveInstanceState()](https://developer.android.com/reference/kotlin/android/view/View#onSaveInstanceState()) 及び [onRestoreInstanceState(Parcelable)]() を簡単に実装する方法のメモです。例えば、foo, bar, hoge, fuga という4つのプロパティを保存したいなら以下のような感じになります。
“`kotlin
override fun onSaveInstanceState(): Parcelable = onSaveInstanceState(target)
override fun onRestoreInstanceState(state: Parcelable) = onRestoreInstanceState(state, target)private val target = listOf(::foo, ::bar, ::hoge, ::fuga)
“`# 方式
[o