- 1. [Delphi] Windows / macOS / iOS / Android でアプリのバージョン情報を取得する
- 2. 【Jetpack Compose】WaerOSで簡単なアプリを作ってみる
- 3. 【Flutter】Android StudioでLogcatがなぜか存在しない
- 4. Tauri でモバイルアプリをビルドする
- 5. Appiumはじめの一歩(Android版)
- 6. モバイルアプリの良質デザイン6選
- 7. Jetpack ComposeのPaddingValues同士を加算する
- 8. Androidアプリのパケットを(ヘッダだけ)眺めてみる
- 9. [Android] Bitmapのrecycle()は何をしているのか
- 10. Jetpack ComposeのSide-Effectsまとめ
- 11. 【Android】ViewPager2で無限スクロールを実現させてみたら意外と簡単だった
- 12. RecyclerViewにドラッグドロップで並べ替え機能を追加する
- 13. AndroidStudio使われていないコードを探す方法
- 14. Android DevelopersのGuide to app architectureの更新で気になったところを拾うメモ
- 15. 【Android】M1 Macでadbコマンドのパスを通してapkファイルをAndroid端末へインストールする方法
- 16. 一年で3つのハッカソンに参加してみての感想と反省
- 17. Android StudioのLogcatにおける新しいKey-Value検索
- 18. JUCEを使った自作Androidアプリの開発から公開まで
- 19. 個人デバイスと会社デバイス向けにBoxモバイルアプリのポリシーを分ける
- 20. Android App Linksを開発環境で動作検証する方法
[Delphi] Windows / macOS / iOS / Android でアプリのバージョン情報を取得する
# バージョン番号の指定
Delphi はプロジェクトオプションでバージョン番号を指定できます。
:::note info
Android は VersionCode / VersionName を指定できます。
VersionCode は連番で増えていくもので、VersionName は人間が読めるバージョン情報です。
今回は、VersionName を取得します。
:::画像は各プラットフォーム毎のバージョン番号指定部分を赤枠で示したものです。
左上:Windows
右上:Android
左下:macOS
右下:iOS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12977/a8ace051-95b2-bcfc-704d-4ab1868479f1.png)# バージョン番号を取得する
バージョン情報ダイアログにバージョンを表示するときやサポートにログを送って貰うときにログにバージョンを仕込んでおくとか、そういう時にバージョン情報が必要になります。
ということでプロ
【Jetpack Compose】WaerOSで簡単なアプリを作ってみる
この記事はand factory.inc Advent Calendar 2022 20日目の記事です。
昨日は @yuu__uuki さんの [【SwiftUI】カスタムTabViewを実装してみた](https://qiita.com/yuu__uuki/items/8ddbca8aa833763e62e9) でした。# はじめに
Google製WearOSであるところのPixelWatchが今年10月に発売しました :tada:
私も早々に買ってちょくちょく弄ってみたので、その経験を元に、
JetpackComposeでごく簡単なアプリを作る手順をまとめてみます。## 対象のサーフェスについて
前提として、WearOSにはモバイルよりも多彩なサーフェスが用意されています。![principles_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241152/114cee26-af0d-8824-df64-e4d267088693.png)
[Wear OS 開発の原則 | And
【Flutter】Android StudioでLogcatがなぜか存在しない
# はじめに
普段はVScodeでFlutter開発してるのですが、ある事情によりAndroid Studioを使ってみることになりました。するとLogcatがない。。。。
![Screen Shot 2022-12-19 at 21.34.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/9e247cf6-082a-7269-6945-d8f91c472bee.png)# Event Logにも何もない
https://zenn.dev/fukutan/articles/33e45b48cf8fa6![Screen Shot 2022-12-19 at 21.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/064e3c5b-5605-fdca-bc35-a0dd4e3fcfa4.png)
Event Logに何も表示されません。。。どうしたら良いんですか?ずっとL
Tauri でモバイルアプリをビルドする
株式会社ACCESS Advent Calendar 18日目の記事です。
(今年も私の方でカレンダーの管理をやらせていただいてます。)# 概要
2022/12/09 に Tauri Mobile 2.0.0-alpha.0 がリリースされました。
https://tauri.app/blog/2022/12/09/tauri-mobile-alpha/
こちらを手元で実際に動かしてみた記事になります。
## Tauri とは
https://next–tauri.netlify.app/
Tauri は、[Electron](https://www.electronjs.org/ja/) の代替を目指して開発されている、マルチプラットフォームのフレームワークです。
Tauri の基盤はすべて Rust で実装されており、ファイルサイズとメモリ容量が小さい点が特徴とされています。# 環境
* macOS Ventura 13.0.1
* Intel Core i7 (x86_64)# フロントエンドのビルド
まず初めにフロントエンドをビルドします。
今回は
Appiumはじめの一歩(Android版)
# はじめに
Appiumの[Getting Started](https://appium.io/docs/en/about-appium/getting-started/index.html)を進めていたのですが思ったよりも動かすのに苦労したので手順をまとめておきました。
GettingStartよりも簡単に動く(はず!)https://appium.io/
# 環境
私が用意した環境は以下の通り
– node v16.16.0
– npm 8.11.0
– Java 11
– Android Studio 2021.2.1# AndroidStudioのセットアップ
こちらに従ってインストール・セットアップを済ませます。以下が動くことを確認してください。
– adbコマンド
– appiumを動かすときにadbコマンドを利用するため必要になります
– エミュレータの起動
– ひとまずなんでもOKです。https://appium.io/docs/en/about-appium/getting-started/index.html
# App
モバイルアプリの良質デザイン6選
# この記事について
どうも初めまして。
ARISE analyticsのタコです。
本記事は ARISE analytics Advent Calendar 2022 の19日目の記事になります。今回は個人的に使ったことのあるアプリから好きなデザインのアプリを6個に絞って紹介します。
良いデザインのアプリって触っていて本当に楽しいですよね。
それがユーザーデザインであれ、UIの話であれ。
知ってるわってレベルの超有名なものもあったりするのはご愛嬌という事で。
なおメインのOSはiOSになります。# Disney Resort
iOS:https://apps.apple.com/jp/app/tokyo-disney-resort-app/id1313147771
Android:https://play.google.com/store/apps/details?id=jp.tokyodisneyresort.portalapp&hl=ja&gl=US
リゾートアプリです
早速知らない人を探す方が難しいレベルのDisney様によるアプリです。
とは言ってもディズニーリゾート
Jetpack ComposeのPaddingValues同士を加算する
`LazyColumn` / `LazyRow` の引数で登場する `contentPadding: PaddingValues` で複数の `PaddingValues` を加算したい時のコード例です。
### 実装
“`kotlin
Scaffold(
topBar = {
TopAppBar()
}
) { contentPadding ->
val layoutDirection = LocalLayoutDirection.current
LazyColumn(
contentPadding = PaddingValues(
top = 16.dp + contentPadding.calculateTopPadding(),
start = contentPadding.calculateStartPadding(layoutDirection),
end = contentPadding.calculateEndPadding(l
Androidアプリのパケットを(ヘッダだけ)眺めてみる
PCを使用している場合、ブラウザのインスペクタを開くことで通信している内容・タイミングなんかを眺めることができます。
じゃあモバイル端末の場合はどうなんだということを思ったので、今回はAndroidアプリの通信を眺めてみる話をします。※文中には適宜ふわふわした表現が含まれます。自信がない部分については可能な限りより詳しいドキュメントへの参照を貼らせていただきます。誤りなどあれば指摘いただけると幸いです。
# パケットキャプチャの導入
モバイル端末の通信内容を取得するためにパケットキャプチャを導入します。
>パケットキャプチャー
通信路を流れるパケットを取得するためのツールの機能や、その行為をする者。ツールとしての総称は「スニファー」という。
様々な目的に使われるが、プロトコルの情報を整形し通信状態を解析するツールを「プロトコルアナライザー」という。
https://www.wdic.org/w/TECH/パケットキャプチャー要するに通信内容を取得するツールです。しかし通信内容といっても、例えばメールで送信されたテキストがそのまま読み取れたりといったことは(基本的に)出来ま
[Android] Bitmapのrecycle()は何をしているのか
Bitmapの処理を行なっているライブラリのコードを読むと、Bitmapの`recycle()`メソッドが呼ばれていることに気づく。そこで、Bitmapのrecycle()の挙動について調べたので、以下にまとめる。
### AndroidバージョンごとのBitmapのメモリ管理の違い
前提知識として、以下の公式ドキュメントによれば、Bitmapのメモリ管理の方法は、Androidのバージョンによって異なる。
https://developer.android.com/topic/performance/graphics/manage-memory
まず、Android 2.2 (API level 8) 以下では、GCが発生する際に、アプリのスレッドが停止される。一方、Android 2.3でconcurrent GCが追加され、Bitmapへの参照が無くなった直後に、メモリが回収されるようになった。
また、Android 2.3.3 (API level 10) 以下では、Bitmapのピクセルデータはネイティブメモリに保存される一方で、Bitmap自体はDalvik (J
Jetpack ComposeのSide-Effectsまとめ
本記事は ZOZO Advent Calendar 2022 カレンダー Vol.2 の 18 日目の記事です。
明日の記事は@sassywindの **「Slickにおいてcreated_at, updated_atを意識しないようにする」** です。Jetpack Composeを用いて開発していく中で、かなりの頻度で使用するside-efffect APIですが、どれを使用するか迷うことはありませんか? 筆者は毎回迷うため、それらを明確にする為にも本記事ではユースケースや具体例を交えてメモがてら整理していこうと思います。
またこの記事で使用しているIDEとdependenciesのバージョンはそれぞれ下記になります。
**—使用しているバージョン:—**
`Android Studio:` “Android Studio Electric Eel | 2022.1.1 Canary 10”
`Jetpack Compose:` “1.2.0”
`Kotlin:` “1.7.10”# Codeサンプル
本記事で紹介しているside-effectsのサンプルは、
【Android】ViewPager2で無限スクロールを実現させてみたら意外と簡単だった
# はじめに
皆さん、ごきげんよう!れぶです!今回の記事では、`ViewPager2`×`FragmentStateAdapter`で無限ループさせる方法をまとめます。
`Fragment`間の無限スクロール動作を実現したい方に特に参考になればと思います。それでは、参りましょう!!
# 開発環境
* MacBook Air
* Android Studio Dolphin | 2021.3.1
* Kotlin
* compileSdkVersion 33
* targetSdkVersion 33
* minSdkVersion 21# 動作イメージ
今回は以下のように、縦方向のスクロールで3ページ分を無限ループします。![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2456250/078d0348-92f0-0ff5-4a13-aa860ec2b58f.gif)
# 考え方
結論、**実際のページに偽の2ページ分を追加する**やり方です。
RecyclerViewにドラッグドロップで並べ替え機能を追加する
あんまり使うことがなくて、使おうとする度にどうやるんだっけ?と調べるやつ
RecyclerViewはその内部でドラッグドロップで並べ替えをする機能を実装するのは非常に簡単です。
まずは、シンプルなリストを作ってみましょう
“`kotlin
private class ItemViewHolder(val binding: ItemViewBinding) : ViewHolder(binding.root)
private class ItemAdapter(context: Context) :
ListAdapter(object : DiffUtil.ItemCallback () {
override fun areItemsTheSame(oldItem: Int, newItem: Int): Boolean = oldItem == newItem
override fun areContentsTheSame(oldItem: Int, newItem: Int): Boo
AndroidStudio使われていないコードを探す方法
複数人で開発をしていたり、プロジェクトを引き継ぎ開発したりしていて、不要なコードを見かけたりすることがあると思います。
その不要なコード一覧を表示させる方法があるのでやってみようと思います。
(警告系のコードも表示されます。)# 方法
AndroidSutudioを開き、上部のCodeをクリックします。
![スクリーンショット 2022-12-18 19.12.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/8d3e1fdc-0131-1492-86c2-853c6b44832d.png)そして、Inspect Codeをクリックします!
![スクリーンショット 2022-12-18 19.13.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/04cadbfa-9590-a079-8afc-686c0470ca0d.png)
Custom scopeで検索したい範囲を
Android DevelopersのGuide to app architectureの更新で気になったところを拾うメモ
更新は色々あったようなんですが、基本的なところはそこまで更新されていなそうに見えました。個人的に面白かったところを太字にしておきます。本当にキャッチアップ用のメモです。
# 概要ページ
https://developer.android.com/topic/architecture
このSingle source of truthとUnidirectional Data Flowについてのまとめ的な部分が加わりました。この考え方自体を詳しく書いているところが今まではComposeのところしかなかったような気がするのでいいですね。
## Single source of truth
https://developer.android.com/topic/architecture#single-source-of-truth
> When a new data type is defined in your app, you should assign a Single Source of Truth (SSOT) to it.
新しいデータ型を追加したらそれをSSOTに
【Android】M1 Macでadbコマンドのパスを通してapkファイルをAndroid端末へインストールする方法
# 前提
– Android studioセットアップ済み
# 環境
– Mac M1 OS Monterey12.6
– Android12(実機)
– Android Studio Chipmunk | 2021.2.1 Patch 2# 「Android SDK Location」に表示されるパスを確認
Android studioの環境設定(Preferences)`command + ,`を開き、 System Settingsを開いてAndroid SDKで**Android SDK Location**を確認する。
デフォルトだと下記のようになっている。
“`
/Users/ユーザ名/Library/Android/sdk
“`
![スクリーンショット 2022-12-18 15.12.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2604036/2ff51c90-9b03-bd88-d083-777ba0a6bb1f.png)# Macのデフォルトのシェル環境が「zsh
一年で3つのハッカソンに参加してみての感想と反省
こんにちは、atomicです。この記事は「[学生Androider Advent Calendar 2022](https://qiita.com/advent-calendar/2022/androider_student)」の18日目の記事です。
今日12/18で、Android開発に触れてからちょうど1年ほど経過しました。
絶賛ハッカソン参加中で2徹目の状態の私が、これを機にこの1年を振り返ってみて感想と反省を書こうと思います。この記事を通して、ハッカソンに参加してみたいけど迷ってる人や、ハッカソンって意味あるの?って思っている人たちにハッカソンの魅力を伝えられたらと思います。
また、ハッカソン経験者の方にも私の反省で何か参考にできるものがあれば嬉しいなと思っております。
# 目次
– ハッカソンとは
– 私が参加したハッカソンについて
– 反省点・やってよかったことなど# ハッカソンとは
本題に入る前に、ハッカソンという単語を初めて聞いた人もいるかもしれないので、簡単に説明しておきたいと思います。ハッカソンとはハック(Hack)とマラソン(Marathon)
Android StudioのLogcatにおける新しいKey-Value検索
## 概要
2022年9月15日にStable channelとなったAndroid Studio Dolphinからは、Logcatの機能が刷新されました。いくつか新しくなった機能がありますが、その中でもログの検索がKey-Value方式になったことが最も大きな変更点ではないでしょうか。
ところが、以下の公式ドキュメントには代表的な使い方しか書かれておらず、私は最初かなり戸惑いました。そこで改めてKey-Value検索で出来ることを整理し、まとめてみました。
[Android Studio Dolphin : 新しいLogcat](https://developer.android.com/studio/releases?hl=ja#logcat)
![スクリーンショット 2022-12-16 19.46.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281445/0a29981b-ab29-45b7-4d9b-575a165858ac.png)## 使用可能なKey
ドキュメントに
JUCEを使った自作Androidアプリの開発から公開まで
前略 「KBass」というAndroidアプリを作成しました。
(音がでます)
JUCEでAndroidアプリ開発
一か月頑張ってひとまず公開できそうなレベルにもっていけました。
低スペックの端末で動作を安定させることが課題だけど、なんであれ作ったものをVSTやPCソフト用に流用できるのは神ですわ#JUCE pic.twitter.com/YyFJrpPwTT— koisignal/こいしぐ (@koisignal1) November 23, 2022
某ベースシーケンサーのようなベースラインを鳴らすことができるアプリです。
このアプリは実は
**JUCEで作成したものに広告(Admob)を挿入しています。**
公開されてダウンロード数が増えれば広告収益が見込めるようになっています。
これまでVSTなどのオーディオ系ソフトウェアを自作したとき、それでお小遣いを稼ぐには「BOOTHやgumroad、shopifyなどでデジタル販売する」という手段がほとんどだったと思います。
しかしながら、無料でも素晴らしいVSTやDAW、音声Webサービスがあふれている昨今、個人開発のVST等にお金を払ってもらうのはなかなか大変なことです。
そんななか「無料のスマホアプリとして公開し、広告を挿入する」という選択肢を実例として提示できるかもしれません。これをきっかけに収益を得るまで
個人デバイスと会社デバイス向けにBoxモバイルアプリのポリシーを分ける
Boxをモバイルデバイスから利用する際、
**「同じユーザーだけど個人デバイス(BYOD)からアクセスした場合はプレビューだけ、会社デバイスからは編集もできる」**
といった制御をMicrosoft IntuneのMAM (アプリ保護ポリシー)と組み合わせて実現する設定例を紹介します。# Boxモバイルアプリの種類
Boxのモバイルアプリは大きく分けて2種類あります。* 標準のモバイルアプリ(以下、”標準アプリ”)
* Box for EMMBox for EMMをMicrosoft IntuneなどのMDM/EMMソリューションから配信することで、**「アクセス元のデバイス制限 (例:会社デバイスからのみBoxにアクセスさせる)」** や、**「アクセス先のBoxテナント制限 (例:個人用Boxアカウントにモバイルアプリから接続させない)」** することが可能となります。標準アプリはBYODなど個人デバイスに、Box for EMMはMDM/EMMで管理された会社デバイスにインストールされて利用されます。Box for EMMについては以下ドキュメントをご参照ください。
Android App Linksを開発環境で動作検証する方法
### 本記事の概要
Android App Linksとは、HTTP(S)をスキーマとするURLをクリックした際に、対応するAndroidアプリをシームレスに (どのアプリで開くかをダイアログで選択する必要なく) 立ち上げることを可能にする手法である。
https://developer.android.com/training/app-links#android-app-links
App Linksの導入方法に関しては、公式ドキュメントに詳しく書かれている。一方で、開発環境でApp Linksの動作確認を行う方法は明記されていない、かつやや煩雑である。
そこで本記事では、App Linksを開発環境で動作検証する際に、私が使用した方法を紹介する。大まかには以下の5ステップの作業が必要となる。
1. ローカルでのビルド時に使用される証明書のSHA256 fingerprintを入手する。
2. 上記のfingerprintを使用し、ローカル用のassetlinks.jsonを作成する。
3. Node.js (Express) 製のサーバーとngrokを使用し、ローカル