- 1. Flutterチュートリアル Todoアプリを作ろう! ~環境構築~
- 2. Roomの実装方法まとめ
- 3. Google Play Console経由でaabファイルをインストール
- 4. 【Android】「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法
- 5. 【Android】ツールバー(Toolbar)にアプリアイコンを表示しサイズを調整する
- 6. 初めてGithub ActionsでCIとやらをやってみた
- 7. [Flutter]Androidでデバッグ実行しても、エラー発生もなしでインストール状態が続く
- 8. ZOZOのアプリのUIを再現しようの会 【お気に入りタブ編】その1
- 9. Android: SDK Managerに含まれていないCMakeバージョンを使用する
- 10. Play App Signingで登録されている署名のSHA1のハッシュ値を取得する方法
- 11. Pepper SDK入門(33) LookAtで見えないもの以外を見つめる
- 12. 【Android】WebViewをJetpack Composeで使った場合の、バックキーで前ページに戻る方法
- 13. MediaCodecでbitmap列から動画作成
- 14. Couchbase Mobileアプリケーション開発へのロードマップ
- 15. Pepper SDK入門(32) Frameでメリーさんのように正確な現在地を把握する
- 16. Unity x Androidビルドで「Failed to update Android SDK package list. See the Console for details.」
- 17. 【Android】OkHttpによるHTTP通信時のコネクションの再利用
- 18. AndroidのNavigationコンポーネントで親Fragmentを取得する方法
- 19. Android NDK で静的ライブラリを最小構成で作成する
- 20. Androidテスト全書 第1章 テスト入門
Flutterチュートリアル Todoアプリを作ろう! ~環境構築~
# この記事を書こうと思った理由
この記事を書く前はFlutterでMarkdownで書けるメモアプリを作成していました。そのアプリの制作が終わったので、ここらへんで一旦自分のFlutterの知識をアウトプットしようと思いこの記事を書きました。## デバック環境
– Windows 10
– Android 30## Flutter環境構築
1. FlutterSDKのダウンロード
[FlutterSDKのダウンロードリンク](https://flutter.dev/docs/get-started/install)
ここからSDKをダウンロードしCドライブ直下などに展開してください。2. Flutter SDKのパス通し
SDKの展開したフォルダ・ディレクトリの名前が「flutter」になってると思います。その中の「bin」のファルダのパスを通してください。3. Android Studioのインストール
[Android Studioのダウンロードリンク](https://developer.android.com/studio)
ここからインストーラーをダ
Roomの実装方法まとめ
[前々回](https://qiita.com/kame_yang/items/131fa044dd8880bc3379)、[前回](https://qiita.com/kame_yang/items/a88c316b5fd90c212d78)に続き、今回は`Room`の実装方法をまとめてみようと思います。
# この記事の内容
公式の[ドキュメント](https://developer.android.com/guide/navigation?hl=ja)やトレーニング「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」のレッスン6「Room データベースとコルーチン」を参考に実装のポイントとエッセンスをまとめていきます。### 前提知識
* kotlinの基礎的な文法
* AndroidStudioの使い方/アプリの作り方
* 画面や画面部品の配置方法
* `Navigation`の実装方法([前々回](https://q
Google Play Console経由でaabファイルをインストール
# はじめに
bundletoolを使う方法は下記に掲載されている。
https://qiita.com/ikemura23/items/9b6064cb123edc1e233fここではGoogle Play Console経由でインストールする方法を解説する。
# インストール方法
1. Google Play Consoleのアプリ画面からメニューを開き、App Bundle エクスプローラを選択。
![app_bundle_explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/f9749f46-b083-24d8-56a9-3b1a42e00ac9.png)2. アップロードボタンからaabをアップロード
3. ダウンロードタブのアクセスを管理から、ダウンロードしたいGoogleアカウントを追加
4. ダウンロードタブの`共有可能なリンクをコピー`からダウンロード
【Android】「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法
Androidで「java.lang.AssertionError java.lang.NoSuchFieldException」が出たときの対処法をご紹介します。
## 環境
Android Studio 4.1.3
kotlin 1.4.32
java 1.8.0_241## 現象
Androidアプリの評価のため社内リリース版を公開して使用していると、ある箇所でアプリが強制終了しました。
そこでデバッグを有効にしてログを確認してみると以下のエラーが出力されていました。“`
java.lang.AssertionError java.lang.NoSuchFieldException: Open
“`
「Open」は自分で定義したenumクラスの定数の一つです。
デバッグ版ではこのようなエラーが出ていなかっため、気づかずに社内リリースしていたようです。## 解決法
[こちらの質問](https://stackoverflow.com/questions/57790047/getting-java-lang-assertionerror-java-lang-nosu
【Android】ツールバー(Toolbar)にアプリアイコンを表示しサイズを調整する
#はじめに
最近の Android は Material Design を適用することが多くなっています。
また、アプリアイコンには Android7.0 でラウンドアイコン(Round Icon)が登場して、Android8.0 ではアダプティブアイコン(Adaptive Icon)が登場しました。それによってOSごとに表示されるアイコンも変わります。
今回は普通のアイコンとアダプティブアイコン、ベクター画像といったどんな形式のアイコンにも対応できるツールバーのアイコン制御方法を紹介しようと思います。[【公式ドキュメント】アダプティブ アイコン](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive?hl=ja)
#サンプルアプリを作成
今回は簡単に Android Studio から New Project でサンプルアプリを作成します。
シンプルなアプリの「Empty Activity」を選択しました。
![New_Project.png](https://qiita
初めてGithub ActionsでCIとやらをやってみた
#CIとは?
そもそもCIとは何なのでしょうか。正直私も今回初めてCIを扱うので腑に落ちる理解はできていませんが、すごく簡単にいうと自動的にアプリが正常かどうかチェックしてくれるシステムかなと考えています。#GitHub Actionsを利用してCIをセットアップできる
CIを行うには様々なツールが存在するみたいですが、Github Actionsを利用すると他のCIツールと同じようにプッシュやプルリクなどの操作をトリガーにして処理を実行させることができます。#セットアップしてみよう
CIを導入したいプロジェクトのリポジトリに行くと画面上部にActionsというタブ?があるのでそれをクリックします。
これをクリックするとワークフローをセットアップしようねみたいな画面が出てくるのでその中から自分が作成したプロジェクトの言語と
[Flutter]Androidでデバッグ実行しても、エラー発生もなしでインストール状態が続く
## 概要
– Androidでデバッグ実行しても、エラー発生もなしでインストール状態が続く
## 環境
– Mac OS Big Sur 11.6## 原因
– 裏でアプリのキャッシュデータみたいなのが残っている可能性がある
## 対策
– adb uninstall ${packageName}
で Successと表示されればデバッグ実行できるようになる
## 参考
– https://stackoverflow.com/questions/51809421/flutter-is-not-able-to-install-the-apk-into-the-real-device-suddenly
ZOZOのアプリのUIを再現しようの会 【お気に入りタブ編】その1
##はじめに
知り合いのAndroidエンジニア方たちとZOZOTOWNのアプリのUIを再現しようというハッカソン的なことを始めました。そこで実装していく上で考えたことや詰まったことなどを何回かに分けて記事として投稿していこうかなと思います。ZOZOTOWNのアプリは画面下に5つのタブがついています(著作権的なことが怖いので画像は載せません?♂️)。今回は一人が一つのタブ毎の画面を担当するという構成になりました。僕はお気に入りタブの担当になったので、お気に入りタブに関して書いていきます!
今回はTabLayoutとViewPager2の接続部分をやっていこうと思います。
##今回の完成像
##全体の構成
TabLayout + ViewPager2 + FragmentStateAda
Android: SDK Managerに含まれていないCMakeバージョンを使用する
私はFlutterでアプリを開発しているのですが、依存するライブラリがC/C++のコードを含んでおり、Android向けのビルドではCMakeのバージョンも指定されていました。Android Studioで該当バージョンのCMakeをインストールしてもエラーでビルドできなかったため独自にインストールして対応しました。[^1]
私がAndroidのネイティブ周りに明るくないこともあり手こずったのでメモしておきます。#環境
– macOS 11.6
– Android Studio 4.1.1#Androidのdevelopersサイト
CMakeのインストール方法について[公式の開発者向けサイト](https://developer.android.google.cn/studio/projects/install-ndk?hl=ja#kts)にも以下のような記述があります。>
1. CMake の公式ウェブサイトから CMake をダウンロードしてインストールします。
2. Gradle で使用する CMake バージョンをモジュールの build.gradle ファイルで
Play App Signingで登録されている署名のSHA1のハッシュ値を取得する方法
Play App Signingで登録されている署名のSHA1のハッシュ値を取得する方法がわからなかったので調べてみました。
まずは、Play Store ConsoleのPlay App Signingのページに記載されているSHA1のフィンガープリントをバイナリーエディタに貼り付けて、保存。ここではファイル名をsha1.binとします。
その後以下のコマンドで、base64.txtにハッシュ値を出力します。“`
openssl base64 -in sha1.bin -out base64.txt
“`
以上です!
Pepper SDK入門(33) LookAtで見えないもの以外を見つめる
#はじめに
LookAtは特定の物や人を見たり、頭部とホイールでそれをトラッキングしたりするのに用いられます。魑魅魍魎や未確認生物の類は見えないはずですが、逢魔時とか丑三つ時とかに試してみるといいかもしれません??
下はLookAtアクションをPepperに実行してもらう場合のサンプルコードです↓“`java
//LookAtのためのターゲットフレームを取得
Frame targetFrame = …;//アクションをビルド
LookAt lookAt = LookAtBuilder.with(qiContext)
.withFrame(targetFrame)
.build();//非同期にアクションを実行
FuturelookAtFuture = lookAt.async().run(); //実行キャンセルのリクエスト
lookAtFuture.requestCancellation();
“`#見て見てPepper
Pepp
【Android】WebViewをJetpack Composeで使った場合の、バックキーで前ページに戻る方法
WebViewでは、バックキー(戻るボタン)を押した場合に前のページに戻る(ブラウザバック)のが一般的な動作かと思います。
本記事では、WebViewをJetpack Composeで使った場合の、バックキーで前ページに戻る方法をメモとして投稿します。# コード
“`kotlin
@Composable
fun MyWebView() {
// 1
val backPressed = remember { mutableStateOf(false) }// 2
AndroidView(
factory = { context ->
WebView(context).apply {
webViewClient = object : WebViewClient() {}
}.also {
it.loadUrl(“https://qiita.com”)
}
},
//
MediaCodecでbitmap列から動画作成
動くコードと参考文献を載せておきます。kotlin&Coroutineに書き直しました。随所お好みにカスタマイズしてください。
jcodecの100倍くらいエンコード早かったです。さすがAndroid純正フレームワーク。2021/10/08:
エラーが出たので、scaled.recycle()をコメントアウトしました。2021/10/10:
読み込ませるframeのwidthとheightが、偶数値でないとエラーになるバグを修正しました。“`使い方.kt
val frames: List= ….
val videoFile: File? = MediaCodecEncoder().encode(this, frames)// suspend function“`
“`MediaCodecEncoder.kt
// MediaCodecフレームワークを使ったエンコード
class MediaCodecEncoder {private val MIME_TYPE = “video/avc”
private va
Couchbase Mobileアプリケーション開発へのロードマップ
# はじめに
Couchbase Mobileによるアプリケーション開発に関する記事や参考情報を、カテゴリー別に整理しています。
## 関連技術
https://qiita.com/yoshiyuki_kono/items/05496b26e1dc4eb99ddb
## 基本的な使い方(ドキュメントより)
### Couchbase Lite
https://qiita.com/yoshiyuki_kono/items/b24266297c4b53017264
https://docs.couchbase.com/couchbase-lite/current/index.html
### Sync Gateway
https://docs.couchbase.com/sync-gateway/current/introduction.html
## チュートリアル
https://docs.couchbase.com/tutorials/mobile-travel-sample/introduction.html
### 利用可能な言語
#### Androi
Pepper SDK入門(32) Frameでメリーさんのように正確な現在地を把握する
#はじめに
都市伝説に登場するメリーさんは、自分の現在地を丁寧に電話してきてくれます。Pepperもそのように正しい位置を把握できれば便利ですね!そこで登場するのがFrameです。
Frameは特定の位置を表します?それでは早速、順を追ってFrameについての理解を深めていきましょう。#FreeFrameかAttachedFrameで最先端
Frameの位置は後から更新されます。交信はしません??
FreeFrameは緯度と経度を表します。例えば本棚の位置にフレームを設定すれば、Pepperはどこに動いても本棚に戻ってきます。
AttachedFrameは対象の物体との相対位置を表します。人も設定することが可能で、その人が動けば一緒についていくピクミン的挙動を示します?画像は刷り込まれるひよこです。
Unity x Androidビルドで「Failed to update Android SDK package list. See the Console for details.」2ヶ月ぶりに、久々Androidビルドをしたらこんな下記エラーが。
“`
Failed to update Android SDK package list. See the Console for details.
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37406/2d909f2a-459d-5bf4-6813-1cc86fe6de5b.png)
## 試したこと
### UnityHubのAndroidモジュールが正しいかチェック
Android SDKが新しいかチェック。
UnityHubのモジュールを使っているので、下記をチェック。
問題なさそう、念の為Unity2019をつかっていたので最新版のUnity2019.4.30f1を入れ直し+Androidのモジュールも下記画像のようにした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37406
【Android】OkHttpによるHTTP通信時のコネクションの再利用
## 概要
[OkHttp](https://square.github.io/okhttp/)のOkHttpClientオブジェクトを再利用することによる通信処理の効率化について記載します。
[iOS(Swift)についてはこちら](https://qiita.com/cwan/items/a1d169152fc65520bf3b)
## 障害事象
弊社が開発しているAndroidアプリのデータ転送量が多すぎるのではないかという報告を受けました。データ転送量を測定してみると、HTTPリクエスト・レスポンスのヘッダーおよびボディサイズの合計の2.5倍程度の量が発生していました。
※このアプリの外部への通信はすべてOkHttp (ver.4) を使用して実装されています。
## 調査方法
Android StudioのProfilerを使用して、通信状況を調べてみることにしました。
1. Androidシミュレーター (AVD) でアプリを起動する
1. ツールバー > [View] > [Tool Windows] > [Profiler]
1. [SESSION] の
AndroidのNavigationコンポーネントで親Fragmentを取得する方法
# 解決策
“` kotlin
val navHostFragment = parentFragment as NavHostFragment
val parent = navHostFragment.childFragmentManager.fragments[0]
if (parent is MainFragment)
// …略
“`
`Fragment#getParentFragment()`が`NavHostFragment`なのでDialogFragmentなどを実装している時、呼び出し元のFragmentにコールバックさせるのがひと手間いる。
`NavHostFragment`の子Fragmentを覗いてみたら“`
[呼び出し元のFragment, 呼び出されたFragment, …]
“`
という風になっているので上記の内容で呼び出し元のFragmentを取得できた。:::note warn
ただし、バックスタックがたくさんある場合はfragments[0]が呼び出し元のFragmentとは限らない。
:::# 別の解決策
https://s
Android NDK で静的ライブラリを最小構成で作成する
## ことの発端
他のプラットフォームで `C++` を使って開発した機種依存しないコード(所謂`共有コード`)を `Android` で使いたい。
小規模ならば `AndroidStudio` で自動生成された `CMakeLists.txt` にソースコードを追加して終了なのだが、`共有コード`が巨大(またはビルドに相当な時間が掛かる)だと色々と厄介。
なので、`共有コード`を独立してビルドして、後でガッチャンコしたい。## `共有コード`のビルド
いきなり巨大な`共有コード`だと大変なので、まずは簡単な構成でやってみましょう。
### 1. ファイル・フォルダ構成
“`:ファイル・フォルダ構成
/
src/
sub.cpp
sub.h
CMakeLists.txt
build.sh
“`### 2. `CMakeLists.txt` を作る
お好きな感じで `CMakeLists.txt` を作ります。
“`cmake:CMakeLists.txt
cmake_minimum_required(VERSION 3.10.2)
Androidテスト全書 第1章 テスト入門
## はじめに
私はAndroidエンジニア一年目になります。
今まで全くと言っていいほどテストコード書かずにいました。
どう書けばいいかもわからない中「[Androidテスト全書](https://peaks.cc/books/android_testing)」を読み始めました。
アウトプットのため各章をまとめさせていただけたらと思います。書籍については以下になります。
Androidテスト全書
https://peaks.cc/books/android_testing
### なぜテストが必要なのか– 未然にクラッシュ防ぎ、開発プロセスに強固なテスト基盤を構築することは品質を確保する必要があるから
– Play Storeで星1のレビューのついたアプリを解析したところ、42%もの割合のアプリがクラッシュを含む安定性の問題があった
– Googleは低品質なアプリをPlay Storeのランキングや検索結果の上位には表示されないようにアルゴリズムを改良した
– テストは動く仕様書であり資産である### Androidのテストの種類と方法
– ブ