- 1. Couchbase Lite機能解説:ピアツーピア同期〜プログラミング構成と設定項目
- 2. 【Android】新規画面の追加、別画面として扱い(Java)
- 3. APKのサイズを約80%削減した
- 4. Android Navigation : DialogFragmentのレスポンスは ResultReceiverで処理したほうが良くないですか? という話
- 5. 【Android】Kotlin + Firestore + RecyclerViewを使ってTodoアプリを作る
- 6. ActivityResultContractのリクエストと結果の処理をより強く結びつかせる
- 7. AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
- 8. .ideaのgit管理について Android Studio
- 9. 【Android】BottomNavigationView(画面下部のナビゲーションビュー)の実装(Java)
- 10. [Flutter] CodeMagic で自動で build_number を更新できない時の対処法。build number が更新されない。 –build-number=$(($BUILD_NUMBER))
- 11. PreferenceScreenの導入に手間取った話
- 12. Android 11 API30 以降に対応したアプリ開発用メモ
- 13. 【Flutter】プラグインでAndroidのActivityとContextを取得する方法
- 14. M1 Mac (Monterey) でandroid studio をインスコするときに躓いた話。 ”Failed to determine required packages”
- 15. Couchbase Lite 機能解説:インデックス作成
- 16. Composeで左右に揃えた複数行のレイアウトを組む
- 17. 【忘備録】ライブラリの依存関係を表示する(特定ライブラリを外す)
- 18. Unity2019でAdmob実装時にクラッシュして表示されないときの対処法
- 19. Android 12に最速で最低限対応してみた!
- 20. App Links の Android 12 うんぬん関連メモ
Couchbase Lite機能解説:ピアツーピア同期〜プログラミング構成と設定項目
## ピアツーピア同期プログラミング構成
Couchbase Liteのピアツーピア同期機能を利用するためには、`URLEndpointListener`クラスを利用します。
`URLEndpointListener`を初期化する際に、`URLEndpointListenerConfiguration`を使用して構成を実行します。
ここでは、Couchbase Liteのピアツーピア同期で行えることの理解を助けるため、`URLEndpointListenerConfiguration`で設定できる項目を紹介します。
## ピアツーピア同期設定項目
`URLEndpointListenerConfiguration`を使用して、リスナーを初期化するために使用できる構成オブジェクトを作成します。
#### `port`
リスナーがリッスンするポート。ポートがnullまたはゼロの場合、リスナーは使用可能なポートを自動割り当てします。
#### `networkInterface`
IPアドレスまたはネットワークインターフェイス名の形式で指定する、リスナーが利用する使用するネ
【Android】新規画面の追加、別画面として扱い(Java)
最近、Android Studioを使って、JavaのAndroidアプリを独学で作成しているので、その過程で勉強した内容です。
作成したコードはGithubで公開しているので、気になる方は下記をご覧ください。
https://github.com/NagaJun1/OriginalCalendar#新規画面作成においての前提
まず、Androidで新規画面(アプリ起動後の初期画面とは別の画面)を表示するには、Javaの場合は`setContentView();`を実行することで表示できます。
ですが、この場合、Androidのライフサイクル(`onStart()`や`onStop()`などのイベント)を使用することが難しくなります。
その問題を解消するために、`Intent`を使用した処理を実装する必要があります。#新規画面の作成
新規画面の’.xml’作成は、プロジェクト作成時に作成される`\res\layout\activity_main.xml`と同様の作りにすればOKです。
(例として、`activity_sample.xml`としておきます。)
ついでに書いておくと
APKのサイズを約80%削減した
# TL;DR
– 結果
“`
# ls -l *.apk
-rwxrwxrwx 1 kabocha kabocha 293997572 Nov 14 20:22 original.apk*
-rwxrwxrwx 1 kabocha kabocha 289364774 Nov 14 20:54 minifyEnabled_shrinkResources.apk*
-rwxrwxrwx 1 kabocha kabocha 97902257 Nov 14 21:34 abiFilters.apk*
-rwxrwxrwx 1 kabocha kabocha 49605621 Nov 14 22:48 extractNativeLibs.apk* # 最終結果
“`(49605621/293997572)*100 ≒ 16.87…
– `app/build.gradle` で,`ndk.abiFilters` を指定
“`
android {
defaultConfig {
// arm64のみサポートする.
ndk
Android Navigation : DialogFragmentのレスポンスは ResultReceiverで処理したほうが良くないですか? という話
タイトルでほぼすべて。 この方法が正しいかどうかわかってないので request for commentsです。
GitHubにプロジェクトを置きました
https://github.com/Nunocky/NavigationAndDialogFragment
* 一般的に紹介されている方法 (app)
* 今回提案する方法 (app2)## 動機
「コールバックでDialogFragmentの結果を取得するなんてレガシー(笑」 と言われたこと。とはいえ Navigationによる Dialogの定義と結果の取得は今まで非常に気に入らなかった。
## 一般的に紹介されている方法 (app)
ViewModelに LiveDataをもたせて ダイアログの結果を Fragmentと DialogFragmentで共有する方法が一般的。
“`DialogResultViewModel.kt
class DialogResultViewModel : ViewModel() {
val result = MutableLiveData
【Android】Kotlin + Firestore + RecyclerViewを使ってTodoアプリを作る
# Cloud Firestoreとは
Cloud Firestore(以下Firestore)とはFirebaseのサービスの1つです。
サーバー上にデータを保存できるデータベースです。
またデータの変更を**リアルタイムで**アプリに反映してくれます。参考:[Cloud Firestore | Firebase Documentation](https://firebase.google.com/docs/firestore)
# 実際に使ってみる
それでは実際にFirestoreを使ってTodoアプリを作ってみましょう。
ソースコードは[こちら](https://github.com/Kaito-Dogi/android-sample-firestore)にあります。(GitHub)![firestore-sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933349/ed2a404c-7e61-fd9d-bcf8-5c95753196b1.gif)
## 手順
1. Fi
ActivityResultContractのリクエストと結果の処理をより強く結びつかせる
ActivityResultContractsの仕組み、個人的にちょっとどうかな?と思っているところがあります。
それは、リクエスト内容と、結果の処理の結びつきが弱く、余計な自由度が残されてしまうところです。例えばパーミッションのリクエストの場合、以下のように記述します。
“`kotlin
private val launcher =
registerForActivityResult(RequestPermission()) {
// 結果の処理
}
…
// リクエスト
launcher.launch(Manifest.permission.CAMERA)
“`ここで、リクエストしているパーミッションと、その結果の処理は紐付いています。にもかかわらず、コールバックの登録時点でリクエストするパーミッションは決まっておらず、lauchをコールする時点で自由度が残されています。ここで間違って異なるパーミッションを指定してしまうと意図した動作となりません。
registerをコールした時点でこの対応関係が固定できないところがちょっとモヤモ
AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
## 概要
AndroidアプリのCircleCiによる自動ビルドからPlayストア自動アップロードまで試してみる
これでアプリを自前でビルドして作成し、手動でPlayストアにアップロードする手間が省かれる## 前提条件
前提条件として既にPlayストアに公開済みのアプリがあること。app bundleに対応していること(apkではなくaabを対象とする)## ビルド設定
`./gradlew bundleRelease` で署名付きaabが出力されるよう設定しておく“`build.gradle
…
android {
…
signingConfigs {
release {
storeFile file(‘../keystore/xxxx.jks’)
storePassword ‘xxxx’
keyAlias = ‘xxxx’
keyPassword ‘xxxx’
}
}
…
buildTyp
.ideaのgit管理について Android Studio
Android Studioでプロジェクトを開始するときに.ideaファイル内のgit管理についていつも迷うのメモします。
### 結論
[こちら](https://takemikami.com/2018/08/29/GitIntelliJ-IDEA.html)によると以下3個をgit管理しておけば良いみたいです。– `build.gradle`
– `.idea/gradle.xml`
– `.idea/misc.xml`### 自分の場合
しかし自分の環境では`misc.xml`にはユーザー固有のファイルパスが記述されていました。とりあえずユーザー固有のファイルパスの部分を`$PROJECT_DIR$`に変更しておけば良いと思います。
上記以外も基本的にユーザー固有ファイルパスの部分を適宜`$PROJECT_DIR$`に直してさえいればgit管理して問題ないかと思います。
### .idea内のファイルについて
記事を各過程で各ファイルがどのような役割なのか簡単に分かったことをまとめたいと思います。(適宜更新していくかと思います。)
– `workspace.x
【Android】BottomNavigationView(画面下部のナビゲーションビュー)の実装(Java)
最近、独自でAndroid のアプリを書いているので、それのメモ書きぐらいのつもりで書いています。
独自で書いているコードは下記に収めてあるので、気になる方は下記をご覧ください。
(「カレンダー_設計書.xlsx」に完成図がざっくりと書いてあります。)
https://github.com/NagaJun1/OriginalCalendar#「BottomNavigationView」とは?
下記画像の、赤枠の部分がそれです。
今回の記事の題名には「Java」と書いてありますが、実装方法自体は「xml」で実装します。
![ナビゲーションバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/b5204b73-9f70-d32e-a279-d3b00bde96dd.png)#実装
ソースコードは下記の通りです。
(各ソースの配置位置は、Andoid Studioでプロジェクトを生成した基本的な構造を想定しています。)“`xml:\res\layout\activity_main.x
[Flutter] CodeMagic で自動で build_number を更新できない時の対処法。build number が更新されない。 –build-number=$(($BUILD_NUMBER))
https://kaedeee.com/flutter-codemagic-build_number/
CodemagicでFlutterを利用する際に、Github にデプロイ後、自動でbuild numberを更新するように設定したにも関わらず、iOSで自動更新が反映されませんでした。
対応を以下に示します。
#対処法
##Codemagicの設定を見直す。
build > build arguments を–build-number=$(($BUILD_NUMBER))
と設定する。
![スクリーンショット 2021-11-12 17.49.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1900756/24fd56ef-c082-f3d8-b787-83342dcb7035.png)
##Xcodeの設定を見直す。
Xcode > Info.plist より、key CFBundleShortVersionString
key CFBundleVersion
部分の
PreferenceScreenの導入に手間取った話
設定画面を自前で作っていましたが、
PreferenceScreenというものがあるらしく導入したときの話です。# 赤くなっていて、設定が反映されていない
“`groovy:build.gradle(:app)
dependencies {
implementation ‘androidx.preference:preference-ktx:1.0.0’
}
“`を記述したのにエラーが出てる。
Alt + Shift + Enterをしても`implementation`が増えるだけで一向に直らない…![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447423/4a2eb61e-0b07-5ade-5f95-e11c27088a0b.png)
# 公式に書いてある通りに修正
https://developer.android.com/guide/topics/ui/settings#kotlin
をもう一度見てみると、
![image.png](https://
Android 11 API30 以降に対応したアプリ開発用メモ
2021年11月からプレイストアの要件でターゲットAPIバージョンが30以降になったことに伴い、作業で躓いたポイントのメモです。
——-
## 前提
Android API30 の要件により、端末内へのアクセスなどをする場合は以降に記載する作業が必要になっています。
私の場合はアプリからブラウザを呼び出すために作業が必要でした。
[Android でのパッケージの公開設定のフィルタリング | Android デベロッパー | Android Developers](https://developer.android.com/training/package-visibility)## AndroidManifest.xml への追記
プロジェクト名/android/app/src/main/__AndroidManifest.xml__
に必要な情報を追記します。
私の場合は以下を記載しました。
“`
【Flutter】プラグインでAndroidのActivityとContextを取得する方法 #概要
FlutterプラグインでAndroidネイティブ画面を利用するために、プラグイン側でActivityとContextを取得する方法を整理します。
プラグイン作成時にはthis経由でActivityを取得できず、代替手段が必要になるため、その補足記事となります。
本記事は[公式ドキュメント](https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration)を参考にして記載しています。#環境
“`shell-session
$ flutter –version
Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 18116933e7 (3 weeks ago) • 2021-10-15 10:46:35 -0700
Engine • revision d3ea636dc5
Tools • Dart 2.14.4
“`#実装
以下の手順で実
M1 Mac (Monterey) でandroid studio をインスコするときに躓いた話。 ”Failed to determine required packages”
##概要
Montereyが動いているM1MacにAndroid studioを新規インストールしようとしたところ、セットアップが一発でうまくいかなかったので解決策をメモ。##症状
Android studioの初期セットアップでNextとfinishを押していけば問題ないという記事が多くあるが、その通りに進めていくと、以下のようなエラー画面が出る。
![k7NcO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270248/ebafcb33-9221-0b5e-72d4-57322f4ed4a7.png)Android studioがAndroid SDKを正常にインストールできない(そんなことあっていいのか?)ためにこのエラーが出るようだ。因みに、Brewで別個にAndroid SDKをインストールしてもダメ。
##解決策
IntelliJ IDEAをインストールし、新規プロジェクト→Android からAndroid SDKをインストールして、Android Studioのセット
Couchbase Lite 機能解説:インデックス作成
Couchbase Liteの機能全般について、以下の記事も合わせてご参照ください。
https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417
## 概要
インデックスを作成すると、クエリのパフォーマンスを高速化できます。クエリは、インデックスを利用して、ドキュメントのセットを絞り込むことができれば、より迅速に結果を返すことができます。
## 新しいインデックスの作成
次のデータモデルに含まれる`type`、`name`プロパティを指定して新しいインデックスを作成します。
データモデル
“`JSON
{
“_id”: “hotel123”,
“type”: “hotel”,
“name”: “Apple Droid”
}
“`インデックスを作成するコードは次のようになります。
##### Android
“`JAVA
database.createIndex(
“TypeNameIndex”,
IndexBuilder.valueIndex(
Composeで左右に揃えた複数行のレイアウトを組む
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53293/d7545a6c-2f9b-453d-7387-b922ce5b486e.png)
こういうやつ。全体の幅を固定値ではなく、もっとも幅の大きい行に揃えて、かつ他の行も左右に揃える。簡単そうに見えて地味に難しいやつ。# 答え
IntrinsicSizeを使用することで簡潔に記述することができます。“`kotlin
@Composable
fun AlignedColumn() {
Column(modifier = Modifier.width(IntrinsicSize.Max)) {
Row {
Text(text = “中華そば”, modifier = Modifier.weight(1f))
Spacer(modifier = Modifier.width(16.dp))
Text(text = “800円”)
}
Row {
Text(
【忘備録】ライブラリの依存関係を表示する(特定ライブラリを外す)
ライブラリの依存関係を表示する
./gradlew :app:dependencies
こんな感じで依存関係が表示される
“`
+— com.google.firebase:firebase-config:21.0.1
| +— com.google.android.gms:play-services-tasks:17.0.2 -> 17.2.0 (*)
| +— com.google.firebase:firebase-abt:21.0.0
| | +— com.google.android.gms:play-services-basement:17.0.0 -> 17.5.0 (*)
| | +— com.google.firebase:firebase-common:20.0.0 (*)
| | +— com.google.firebase:firebase-components:17.0.0 (*)
| | \— com.google.firebase:firebase-measu
Unity2019でAdmob実装時にクラッシュして表示されないときの対処法
https://kaedeee.com/unity2019-admob/
しばらく更新していませんでした!というのもアプリ作るのにはまってて笑
(アプリのURLはまた後で)
ところで今回は、 Unity 2019でAdMobを実装した際にクラッシュしてしまいアプリが表示できなくなってしまう時の対処法です。
(やはり Unity 2019は最新版ということで2019に関する記事がなかなかなーい!!笑笑)
というわけで僕のでよければ参考にどうぞ。
結論から言うと以下二つに対応することでうまくいきました!!
(あ、Android アプリ用です。この記事)
#Unityのバージョンを確認する
結論から言うと
Unity 2019 1.4f1
×
Google mobile ADS Unity plugin 3.16
が最強!
はじめ自分は
Unity のバージョン→ 2019.3.0a3
に
AdMobのバージョン→Google mobile ADS Unity plugin v3.17
を投入!
ですがこの時にx86 no
Android 12に最速で最低限対応してみた!
みなさんいかがお過ごしでしょうか?
私はこの前の週末、某大型商業施設で献血してきました。(400㎖)
プチ社会貢献できましたので、自己満足している今日この頃です。ご褒美?に爽健美茶とアクエリアスのどっちか選んでね。と言われたので
お茶より「栄養」がありそうなアクエリアスにしました。あと箱ティッシュもらいました。
※飲み物配給は血抜き中に飲んでね、という意味でした。急に水分減るので。血抜き時間は5分ほどです。ほて、そのときの出来事なんですけど、献血のバスの横をみるとタンカの上でおんなの人が倒れてました。
どうしたのかな?**早速血の供給を受けてるのかな?**と思ったんですが、ここは病院ではないのです。どうやら血を抜きすぎて?**貧血を起こした**ようです。
かわいそう。だいたい、体重50kgでも100kgオーバーでもおんなじ量抜くのが変なんですよね。
みなさん、くれぐれも献血しすぎには要注意です。
***
さて前置きが長くなりましたが、今回のお題は、Android 12対応です。
Pixel 6シリーズが発売されて、ぼちぼち使っている人が現れてますので、
こりゃ早
App Links の Android 12 うんぬん関連メモ
軽くドキュメントを読んだ際のメモです。
# ドキュメントに関して
– おいらが読んだ時点での[ドキュメント](https://developer.android.com/training/app-links)に関して言えば、和文と英文で文章がまったく異なり、リンクのタイプ分類のような基本的なレベルで異なることが書かれているなど、結構微妙な感じだった、、、。英語側のほうがまともだとは思うのだが、web links の scheme が HTTP, App Links 側が HTTP and HTTPS であると書かれているけど、実際は両方とも https を含む動作をするので、何を信じでいいのかわからない、、、。# たぶんこういうことなんだろーなということ
– Android 12 から云々という話は、端末OSの話であり、ビルド時の compileSdk や targetSdk とは無関係だと思われ。
– http, https 以外は、今まで通りの deep link.
– http, https は、
– 端末OSが Android 12 未満の場合はダイアログで選択。