- 1. Android 12 Advertising ID
- 2. 【Flutter, Android】内部テストのアプリでFirebaseのAuthenticationのログインが失敗する
- 3. Android applicationIdの変更方法について
- 4. iOS/Androidアプリの2要素認証対応 – TOTP認証アプリ設定編
- 5. アプリエンジニアが達人に学ぶDB設計〜徹底指南書〜から学んだ話
- 6. KMM kotlinx-serializationでクラッシュする時にやったこと
- 7. [jetpack compose]Row/ColumnとConstraintLayoutでどの程度レイアウトの作り方が違うのか
- 8. DataStoreを試してみる
- 9. Androidのテストでだけ使うライブラリモジュールを作る
- 10. 【Jetpack Compose】Scaleアニメーション
- 11. 本当にリリースできるの?FlutterでQiitaアプリを作った話。
- 12. Inside Jetpack Compose
- 13. Cordova & React & TypeScript 環境構築&デバッグ手順 (2021年10月時点)
- 14. 【Android Studio】画像スピナー(プルダウン)作成
- 15. Pepper SDK入門(34) GoToでターゲットと巡り合ってもらう
- 16. Android 12βを正式版に更新する!
- 17. DroidKaigi2021セッション資料まとめ
- 18. emacs hy-mode
- 19. React Native + Expoで(iOS,Android)開発環境を構築する
- 20. SesameSDKをFlutterから触ってみて 〜前編〜
Android 12 Advertising ID
## 2021/10 時点
2021/10 に Android 12 が正式リリースされましたが、こちら Adverting ID に関する変更は変更ありません。
Google の説明によると下記のような変更は 2022 の早期にやります。というアナウンスのみです
不気味なのは、これをサーバー側のスイッチもしくはパッチか何かで当てられると、自動的に適用され、ある日突然取れなくなるということです。
ですので、2021のうちに準備しておくのがよいかと思います。### 現在の仕様
* isLimitAdTrackingEnabled が true でも ADID はとれる (なんというざる)
* ユーザーのデバイスOS、アプリケーションのコンパイルSDKのバージョンに関わらず取得可能試しにやってみた結果 (当方が開発しているSDKとアプリの関係も入っています)
| デバイス | SDKコンパイル/ツールバージョン | アプリのコンパイル/ツールバージョン | パーミッション | トラッキング設定 | ADID |
| —- | —- | —
【Flutter, Android】内部テストのアプリでFirebaseのAuthenticationのログインが失敗する
## 何が起こったか
FirebaseのAuthenticationを使用し、GoogleログインをFlutterアプリ内で実行しようとしたら下記のエラーが発生しました。“`
PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
“`しかも、debugモードやreleaseモードで実行したアプリでは発生せず、内部テストにアップロードしたアプリでのみ再現しました。
## 試したこと
debugモードやreleaseモードではログインできるのに、なんで内部テストにアップロードした途端に失敗するんだよと思いつつ、上記のエラー内容を調べるとSHA1のフィンガープリントがfirebaseのコンソールに登録していないのが原因とわかります。
しかし、いくらFirebaseのコンソールを確認してもSHA-1のフィンガープリントは登録されていました。
それもそのはず、debugモードやreleaseモードではログインできるのだから。## 原因
Android applicationIdの変更方法について
Android applicationIdの変更方法するには以下の箇所のファイルをいじります。
– android/app/build.gradle
– ![スクリーンショット 2021-10-24 0.20.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320838/cb5bc251-c1c1-69fc-b845-cf9a627533cf.png)
– AndroidManifest.xml– ![スクリーンショット 2021-10-24 0.22.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320838/80cabfd1-0d35-0089-6cc4-e8a4cc7b15a0.png)
– MainActivity.kt
– ![スクリーンショット 2021-10-24 0.22.42.png](https://qiita-image-store.s3.ap-north
iOS/Androidアプリの2要素認証対応 – TOTP認証アプリ設定編
## はじめに
Webサービスの個人認証において、[Google認証システム (Google Authenticator)](https://support.google.com/accounts/answer/1066447) のようなTOTP認証アプリによる2要素認証を利用することでセキュリティを向上させることができます。しかしながら、その設定方法やその後の運用は非常に難解で、正しく設定できずに挫折してしまったり、スマートフォンの機種変更などにより2度とログインできなくなってしまったというケースも良く耳にしますよね。
そのため、自身で開発しているiOS/AndroidアプリでTOTP認証アプリでの2要素認証に対応する場合、できるだけユーザーに優しいUIで作りたいです。この記事では、iOS/AndroidのOSの仕組みを最大限に活用してTOTP認証アプリ対応するために検討した内容を複数回にわたって共有しようと思います。まずは最も難解な、TOTP認証アプリ設定についてです。
以後、TOTP認証アプリのことを「認証アプリ」と表記します。また、この記事ではTOTP認証アプリの仕組みに
アプリエンジニアが達人に学ぶDB設計〜徹底指南書〜から学んだ話
# TL;DR
– アプリケーションエンジニアもバックエンドの知識はあった方が面白いよ。
– いつどんな仕事が舞い込んでくるか分からないから守備範囲決めずに自己研鑽しようね。
– アンチパターンは実例としてわかりやすい。
– ストレージは、冗長設計しようね。
– 良書でしたので、是非いろんな方に読んで欲しい。(ステマじゃないよ)# 簡単な自己紹介
iOS, Androidのモバイル開発を主に行なってるエンジニア3年目です。
今所属しているチームのリソースの関係でアプリに拘らずバックエンドの開発業務も舞い込んでくるのでそっちの知識も最近は積極的に取り入れています。今回DBに関する書籍を読んだので、アプリエンジニアが知っておくメリットみたいな視点もなるべく取り入れながら、簡単な書評を中心に記事を書いていこうと思います。
## 書くこと
参考書の書評
アプリケーションエンジニアがこの本を読んで学べること
*ばちばちのインフラ屋さんはちょっと物足りない記事だと思います。## 書かないこと
業務レベルでDBを設計・運用する上での知識技能
*本書では論理設計に関してはかなり実用的
KMM kotlinx-serializationでクラッシュする時にやったこと
普段、iOSをやっていて、Androidは全く触っていないですが、KMMがずっと気になっていて某記事を参考に試しにやってみました。
慣れない中、クラッシュの連続で直すのが一番大変だったkotlinx-serializationでのエラーの直し方を残しておきます。
なかなかライブラリが参照されなかったり、クリーンしてようやく直ったと思ったら@ Serializablを使っているクラスが not foundでクラッシュしてしまいました。。まず、shared内のbuild.gradleに下記を記述します。
“`plugins {
kotlin(“multiplatform”)
kotlin(“plugin.serialization”) version “1.4.10” //これを追加
id(“com.android.library”)
}
“`次にandroidApp内のbuild.gradleに下記を記述します。
“`android {
compileOptions {
targetCompatibility = org.g
[jetpack compose]Row/ColumnとConstraintLayoutでどの程度レイアウトの作り方が違うのか
jetpack composeでかんたんなレイアウトをそれぞれ
– Row/Column/Box (※今回Boxは使っていません)
– Constraintで作成した場合、どのような違いが出るのか見てみました。
ConstraintLayoutのUIの作り方とかはこの記事では触れませんがコード見ていただいてもある程度理解できるかなと思います。
作ってみたのはこちら。
[search, share, home, star]
というラベルが付いたアイコンを並べるという部分をそれぞれRow/Columを使って実現したパターンとConstraintLayoutを使って実現したパターンとなります。
“`kotlin
@Composable
fun RowColumnOrConstraintScreen() {
DataStoreを試してみる
# [DataStore](https://developer.android.com/topic/libraries/architecture/datastore?hl=ja)とは?
> プロトコル バッファを使用して Key-Value ペアや型付きオブジェクトを格納できるSharedPreferencesの進化版DataStore には、以下2 種類がある
– **Preferences DataStore**
– キーを使用してデータの保存およびアクセスを行います。この実装では、
定義済みのスキーマは必要ありませんが、タイプセーフではありません。
– **Proto DataStore**
– カスタムデータ型のインスタンスとしてデータを保存します。この実装では、
プロトコル バッファを使用してスキーマを定義する必要がありますが、タイプセーフです。## 試した環境
サンプル用に[こちら](https://github.com/Slowhand0309/DataStoreSample)にリポジトリ作成しています。“`
Androidのテストでだけ使うライブラリモジュールを作る
# 概要
[Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(16)ライブラリバージョンアップ2021春(2)](https://qiita.com/kasa_le/items/3fc4814159e20f25c59a)
上記の記事にて、KotlinでAndroidアプリを作るシリーズを作っていますが、InstrumentationTest(androidTestフォルダのテスト)とRobolectric版のテストを同時に作っていて、いわゆるUtil系のクラスや関数が双方に必要でコピペしていくのが面倒になってきました。
テスト用の共通コードを共有する方法をとれば、コードのコピペは減らせるのですが、build.gradleのライブラリの記述が長くなってきて、テスト用のライブラリだけで長くなってしまい、本体のライブラリが分かりづらくなってきました。
そこで、テストに関連するコードを共通モジュール化することをやってみたので、その覚え書きです。
Android向けのライブラリモジュールを作る方法はいくらでも探せばありますが、私が
【Jetpack Compose】Scaleアニメーション
ComposeをScaleさせるアニメーションの実装に苦労したので書きます。
ここで書くのは以下2パターンです
– 無限ループするScaleアニメーション
– 表示時に一回だけ実行するScaleアニメーション今回動かすComposeはこんな丸いBoxです。
“`kotlin
@Composable
fun Circle(modifier: Modifier = Modifier) {
Box(
modifier = modifier
.size(80.dp)
.clip(CircleShape)
.background(Color.DarkGray)
)
}
“`## 無限ループするScaleアニメーショ
本当にリリースできるの?FlutterでQiitaアプリを作った話。
![poster_new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678085/27dcb69c-c257-7add-27aa-0a723fe70ada.png)
## はじめに
昨年の春先からFlutterを触り始めて、状態管理シリーズの記事や「Dart vs Swift」の翻訳を出してきたが、いつかFlutterで自作アプリを出したいとの思いが強くなり、今回のQiitaアプリに至りました。####ダウンロード先
▼iOS
https://apps.apple.com/jp/app/open-qiita/id1590830106▼Android
https://play.google.com/store/apps/details?id=com.jamestong.open_qiita## Open Qiitaの技術要素
– 状態管理
グローバル状態、例えば記事本文の文字サイズ変更、テーマカラーの変更は**BLoC** + **Equatable**;
特定イベントの状態あるいは通知
Inside Jetpack Compose
The English version is available here. (英語バージョンはこちら)
https://medium.com/@takahirom/inside-jetpack-compose-2e971675e55e# なぜ内部を知るか?
Jetpack Composeってまるで魔法みたいですよね?
例えば、関数に返り値がなくてもレイアウトされたり、勝手に差分更新がうまく動いたりしますよね?![compose.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/435f822e-9281-0440-ec78-80799e3544a0.gif)
https://developer.android.com/jetpack/compose?hl=en より知りたいと思ったのは、どうやって動いているか分からないものを見ると中身を知りたくなるのが純粋な理由です。
しかし、これからJetpack ComposeがAndroid開発のデファクトスタンダードになっていくと思われ
Cordova & React & TypeScript 環境構築&デバッグ手順 (2021年10月時点)
2021年10月時点で ** Cordova & React & TypeScript ** の環境作成とデバッグを行う手順です。
参考ページの手順は古くなっており、2021年10月時点では環境の問題でビルドができません。
ビルドが成功するまでにはかなりの試行錯誤が必要でしたので、後学のために手順をまとめています。
* Cordova環境作成 参考ページ
https://qiita.com/bathtimefish/items/113154e89650b351b5b7
https://qiita.com/hal_sk/items/cdc459fd639a736bccc3
## 目的
* Cordova+Reactでアプリを作成し、Android実機上でTypeScriptのデバッグを行う。
## 前提
* create-react-app を使い、ビルド、実行、パッケージの追加ができること
* Windows10* Macは簡単にできるそうです。
## 作成したソース一式
https://github.com/murasuke/cordova
【Android Studio】画像スピナー(プルダウン)作成
スピナーに画像をセットする処理。
作成するのに少々時間がかかったのでメモ。# スピナーアイテムのレイアウト作成
各々の画像表示用のアイテム“` item.xml
Pepper SDK入門(34) GoToでターゲットと巡り合ってもらう
#はじめに
GoToでは、Pepeprをどこかに移動させることができます。トラジェクトリファイルを利用したAnimateとは異なり、障害物を回避して目標地点に到達するように柔軟に動いてくれるのが特徴です。
![k0120_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574697/1c9dd00d-5ac1-40e4-7441-9eb44c084dcc.png)
このようなアクロバティック回避は不可なので、乗り越えられる塩梅の試練を課してあげてください。“`java
// ターゲットフレームを取得
Frame targetFrame = …;// アクションをビルド
GoTo goTo = GoToBuilder.with(qiContext)
.withFrame(targetFrame)
.build();// 同期でアクションを実行
goTo.run();
“`#GoToの微に入
Android 12βを正式版に更新する!
みなさん、初めまして!
Androidアプリ開発している「kano-ts」と言います。
今後、ちょいちょいAndroidネタをアップしていきますので、よろしくお願いします!## さてと、
10/19(日本時間10/20)、ついにPixel系向けにAndroid 12が配信されはじめましたね!
早速、β版(Android ベータ プログラム)を正式版に更新します。
12へ更新できる端末たちはこちらです。
* Pixel 3
* Pixel 3 XL
* Pixel 3a
* Pixel 3a XL
* Pixel 4
* Pixel 4 XL
* Pixel 4a
* Pixel 4a (5G)
* Pixel 5
* Pixel 5a## おや?更新できないぞ?
・OSの「システムアップデート」画面を開いてみましたが、更新画面にならないですね。
## 端末を再起動してみようっと。
・まだ更新できないな。
## Android ベータ プログラムのせいだろうか?
DroidKaigi2021セッション資料まとめ
![スクリーンショット 2021-10-19 13.32.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188222/4a6f4d2d-a3b5-60f8-ea5e-dfbc4f67fb8a.png)
[DroidKaigi2021](https://droidkaigi.jp/2021/)登壇資料、スライドのまとめです。
Twitter等で見つけ次第掲載しますが、もし資料を見かけた方or資料を公開した登壇者の方がいらっしゃいましたら、コメント等でお声がけください。
スライドや資料のリンクが見つかった場合はタイトルにリンクをつけてありますので、タイトルがリンクになっていない場合はまだ資料が見つかっていないものになります。# Day 1
## [プロダクトレベルで必要になる Jetpack Compose テクニック](https://speakerdeck.com/yanzm/purodakutoreberudebi-yao-ninaru-jetpack-compose-tekunituku)
emacs hy-mode
Lisp の人の言質はだいたい典型的な特徴があり、自賛と懐古的な礼讚が7割入るので、9 割引で信用するとして、残りがよくわからないので、自分もそっちに λ ってみるしかない。
—
Android で 64bit アーキテクチャの Arm CPU で common Lisp ぽいことをやろうとすると今のところ唯一 hy だけ方法がわかる。アプリでは **CL REPL (ecl)**が動くが(これイイ!)。
https://www.lights-of-holiness.eu/cl-repl/blog.htm
termux では 32bit だと ecl が動くらしいが、64bit cpu ではエラーになった。他にも debian や ubuntu をセットして、そこへビルドする等、実践しているという情報はあるが、Lisp 側に変更点がなくともホスト側が日々変更があり今日どのようにするのか調べて実践するのには数日間かかる(数十日でも、わからないまま)。
[非公式のパッケージで Racket はある](https://github.com/termux/termux-packag
React Native + Expoで(iOS,Android)開発環境を構築する
弊社のサービス[Hapitas](https://apps.apple.com/jp/app/%E3%83%8F%E3%83%94%E3%82%BF%E3%82%B9-hapitas-w%E3%81%A7%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%8C%E8%B2%AF%E3%81%BE%E3%82%8B/id1475444626)のアプリ版はReact Nativeを用いて開発されています。インターンとして開発に携わっているのですがで正直環境がどのように動いているのか全く理解していなかったので、勉強としてまずは開発環境を構築したので備忘録としてまとめます。30分ほどあれば作れます。
# React Nativetとは
React Native(リアクト・ネイテイヴ)は、Facebookが作成したオープンソースのモバイルアプリケーションフレームワークです。開発者がネイティブプラットフォーム機能とともにReactを使用できるようにすることで、Android、iOSアプリケーションを開発するために使用されています。Web開発で用いられるReac
SesameSDKをFlutterから触ってみて 〜前編〜
まずは、公式セサミアプリでも基にされている[SesameSDKライブラリ](https://github.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp)を参考に調べて参ります。
`Gradle`というオープンソースのビルドシステムが使われている(Javaのjarファイル warファイルを作成してくれる)ので、インストールしてみます。言語は非常に`Java`に近いスクリプト言語である[Groovy](https://agency-star.co.jp/column/groovy) Javaと同じ感覚でスクリプトを書けます。“`
$ curl -s https://get.sdkman.io | bash
“`
こちらを実行して、“`
All done!Please open a new terminal, or run the following in the existing one:
source “/Users/XXXX/.sdkman/bin/sdkman-init.sh”
Then issue th