Android関連のことを調べてみた2021年12月23日

Android関連のことを調べてみた2021年12月23日

[React Native] MacでReactNativeプロジェクトの環境設定 (iOS&Android)

# はじめに
アプリを開発するために必ずSwiftやKotlinを学ぶ必要はありません。Dart言語のFlutterフレームワークもあるし、JS基盤のReact Native(今から略でRNで書きます。)フレームワークでもiOSやAndroidのアプリ開発ができます。

それで、今回の記事はMacでRNプロジェクトの環境を構成する方法についてお話しします。

# Mac(OSX)でiOS開発の環境設定
Mac環境でXcodeを使用してiOSアプリをビルドする方法を説明します。

## パッケージ設置

### Homebrew 設置

“`
#設置しているか確認
$ brew –version
– zsh: command not found: brew
$ /usr/bin/ruby -e “$(curl -fsSL

# 設置コマンド実行
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

#設置完了確認
$ brew –vers

元記事を表示

Androidプロジェクトを始めるとき・初期段階で考えること

この記事は[DeNA Advent Calendar 2021](https://qiita.com/advent-calendar/2021/dena)の23日目の記事です。

Androidプロジェクトを始めるときや、最初の段階で、考えておいたことが良いことや設定しておいたほうが良いことなどに書いていきます。

## パッケージ名

アプリのパッケージ名は全アプリで一意である必要があり、公開後は変更できません。なので、十分に注意してつけましょう。

パッケージ名は[Javaの命名規則](https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html)に従うのが一般的で、適当につけないようにしましょう。

これはユーザーからも確認できるものなので、変な名前にしないようにしましょう。

## compileSdk, targetSdk, minSdk

いくつかSdkを指定する箇所が `build.gradle` にありますが、これらについての説明です。しっかりと理解しておきましょう。

また、これらの値はアプリ

元記事を表示

【Android】 Jetpack ComposeをServiceで使う / Jetpack Compose on Service

Jetpack Composeを[Service](https://developer.android.com/guide/components/services?hl=ja)で使おうと思ったら、いくつかエラーが発生してうまく行かなかったので、メモがてらエラーの内容と対応を記載したいと思います。

# 対応前のコード

下記のコードがエラーが発生してしまう対応前のコードです。
エラーに対処しつつ、Jetpack Composeが使えるところまで行きたいと思います。

“`kotlin:BeforeのMainService.kt
class MainService : Service() {

private val params by lazy {
WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
if (Build.VE

元記事を表示

【Android】公開タイミングの管理ボタンがない

# このボタンがなくて困った…
![Screenshot 2021-12-02 131720.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/a9ac52e6-3e89-e740-45f0-58b669c13b68.jpeg)

PlayStoreにアプリを”初めて”リリースしようとすると「管理対象の公開のステータス」ボタンが表示されません。
審査が通ったらいきなり公開されてしまうんでは・・?という不安な気持ちになります。
こんなときにどうするか、書いておきます。

## 結論

クローズドテストで公開する
![Screenshot 2021-12-02 132019.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/a2527477-5ccd-2952-5648-9064e28a636d.jpeg)

クローズドテストなら予めベータテスタとして登録した人だけに公開されるので安心です。
審査に出すタ

元記事を表示

React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる

## はじめに

先日、下記の記事を発表しました。

https://qiita.com/yoshiyuki_kono/items/bffda8fba33839a3e9aa#couchbase-lite

そこで、Couchbase Liteについて、下記のように書きました。

>…チュートリアルが公開されています。提供されているReact NativeのUI実装(スタータープロジェクト)に対して、Couchbase Liteを利用するためのコードを追加していく形になっています。2018年時点のものにて、提供されているReact Nativeのソースコードは、すでに時代遅れなものとなっていますが、提供されているUI実装は無視しても(React Nativeを昔から使っている人は、提供物をベースに最新化してもよいかもしれませんが )、チュートリアルの内容を参考にして実装を行うことができるでしょう(将来別の記事で発表したいと思っています)。

本稿では、「Couchbase Liteを利用するためのコードを追加していく」部分について、見ていきたいと思います。

ここでは、提供されている

元記事を表示

アプリのUIを考えるためにやったこと

この記事は[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 24日目の記事です。
昨日は@KKusumiさんの[【エンジニアリング】ソフトウェア開発に携わる人間が、ポケモン対戦から学ぶべき3つのこと【ポエム】](https://qiita.com/KKusumi/items/b6fc68d4dbb6cdfb342d)でした。

### きっかけ
こんにちは、Androidエンジニアのyst_iです。

アプリのUI、捗ってますか?

「アプリのUIはデザイナーの担当、エンジニアは深く踏み込まないよ」という考え方は多いと思います。僕も基本的には同じ考えです。ただ、UIをデザイナーだけではなく、チームで考えられたらより良いものが出来ると考えています。

UIはユーザ体験に直結します。また、最終的にエンジニアがコードで実現する箇所です。どうせなら良いUIを選択してユーザに使って欲しいと考えています。

ただ、実際にUIを考えはじめると迷うことが多いです。何を基

元記事を表示

JetpackComposeのViewModelにおける状態管理を試してみた

現在JetpackComposeについて勉強していてViewModelで状態管理する場合はどうするのがいいのか気になったので調べてみました。
なお本記事の内容以外にも方法はたくさんあるので一例として参考程度に見ていただければと思います。

# 方針
実装の方針として以下2点に重点をおいて調査しました。

1. 再コンポーズの際に変更のある関数だけが再実行される [^1]
1. 状態を1つのクラスで管理する

[^1]: [Compose の思想 <再コンポーズ>](https://developer.android.com/jetpack/compose/mental-model#recomposition)に関連する記載があります。

# さきに結論
`mutableStateOf` を使って状態を管理するクラスをラップすると比較的簡単かと思います。
他に `LiveData` `Flow` `RxJava2` も利用できるとのことで[^2]、その中でLiveDataだけよく使っていたので試したのですが2つの方針を同時に満たすことが難しそうでした。(最後におまけで記載します)

[^

元記事を表示

Trackrアプリから学ぶ大画面対応

この記事は[Android Advent Calendar 2021](https://qiita.com/advent-calendar/2021/android) 22日目の記事です。

Android12Lもベータがリリースされ、タブレットや折りたたみ式デバイスなど大画面対応の機運も高まってきているように感じます。
この記事では、そんな大画面対応をGoogleが公開しているTrackrアプリでどのように対応・実装されているのかについて紹介していきます。

# Trackrについて
https://github.com/android/trackr

Trackrはサンプルのタスク管理アプリで、新規タスクの追加や編集、タスクのアーカイブ、タスクのお気に入りといった定番の機能を持っています。モダンな技術を利用しつつ、アクセシビリティの観点からも実装が行われている他、Composeでの実装パターンも開発が進んでいます。
今回はその中で大画面対応にスポットを当てて紹介します。

# Navigation Rail

https://material.io/components/navig

元記事を表示

THETA PLUG-IN STOREへのプラグイン公開手順(リリースビルド編)

## はじめに
リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

今回は、[THETA PLUG-IN STORE](https://pluginstore.theta360.com/)に皆様の成果物を公開する手順を2回に渡って解説していきます。

– THETA PLUG-IN STOREへのプラグイン公開手順(リリースビルド編) ※本記事です
– THETA PLUG-IN STOREへのプラグイン公開手順(公開手続き編)※公開後にリンクを貼ります

![00_TOP.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

Pepper SDK入門(35) LocalizeでPepperに相対的な立ち位置を自覚してもらう

#はじめに
なんだか世知が激辛そうなタイトルですが、あくまでも物理的な意味であり社会的な話は登場しません?☕️
PepperはLocalizeAndMapアクションで、ExplorationMapを内部に配置します。つまりLocalizeAndMapアクションを使って周辺環境の地図を作成した後、Localizeで相対位置の情報を保持するのですね。(極局所的)土地勘ゲットだぜ?⚡️
ExplorationMapはLocalizeアクションのビルドに使用されます。Localizeアクションが実行されている間、相対的な位置の軌道は保持されたままです!消失したりそこからずれたり、転がったり煮られたりすることはないため安心してください?
コード上では以下のようになります↓

“`java
//探索マップを取得
ExplorationMap explorationMap = …;

//アクションをビルド
Localize localize = LocalizeBuilder.with(qiContext)
.withMa

元記事を表示

Spinnerで同一項目が選択されたことを検知したい same position tapped of spinner

#やりたいこと
AndroidのSpinnerには、同一項目が選択されたタイミングを知る術がなく必須の項目なのに仕方なく未選択という項目を入れることになってしまう場合等があるかと思います。

#解決策
最も手っ取り早く簡単に解決する方法がカスタムのSpinnerクラスを作成することです

“`kotlin:CustomPtogramSpinner.kt
class CustomProgramSpinner @JvmOverloads constructor(context: Context?,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0)
: AppCompatSpinner(context, attrs, defStyleAttr) {

override fun setSelection(posit

元記事を表示

食べログアプリでの技術的負債との向き合い方

こんにちは。食べログでAndroidアプリ開発をしている [@sada](https://twitter.com/sadashi_ota) と申します。
この記事は 食べログ Advent Calendar 2021 22日目の記事です。

# はじめに

先月、[TECH HILLS #1](https://techplay.jp/event/836236) というイベントで登壇させていただきました。

https://techplay.jp/event/836236

その時の資料はこちらです。

https://speakerdeck.com/sadashi/shi-herokuahuritefalseji-shu-de-fu-zhai-tofalsexiang-kihe-ifang

今回は上記資料でも触れている「レガシーコードと向き合う辛さ」についてお話できればと思います。

イベントにご参加いただけた方は発表やその後のパネルディスカッションなどでお話ししたような内容も含まれるかと思います。その点はご了承ください。

# 簡単にチーム紹介

私は食べログシステム本部アプリ開

元記事を表示

apk ファイルと aab ファイルについて調べてみた

# TL;DR

App Bundle で問題なく開発できます。ていうかこれからリリースする人は AppBundle 推奨って Google も言ってる。

# 概要

かつて社内用に調査してまとめたものが褒められてうれしかったので公開してゆくスタイル。

# Android アプリのパッケージ形式

Android アプリのパッケージ形式には 2 つのタイプがある。

– .apk
– .aab

難読化を施した場合、.apk ファイルは mapping.txt を取得しておかないと難読化を解除できない。
一方で .aab は mapping.txt の内容をすでに含んでいるという話がある。

アプリをリリースする際には .aab で行うように Google が推奨しているが、__開発時にエラーログを読みやすくするためにはどちらの方式が良いか__ を決めるために、どちらのファイル形式が良いか調査を行った。

# 調査内容

##  Google Play ストアにアップロードできる形式の種類

– APK ファイル (.apk)
– [APK 拡張ファイル](https://de

元記事を表示

Product Flavor を複数のアプリモジュールに展開したお話

# はじめに

Android用のTwitterクライアントやmixiビューアといった個人開発アプリ[^1]をいくつか開発しています。

[^1]: 法人化していますが実質開発メンバー1人の個人開発です。

Twitterアプリの TwitPane は [無料版](https://play.google.com/store/apps/details?id=com.twitpane&referrer=twitpane.com)、[有料版](https://play.google.com/store/apps/details?id=com.twitpane.premium&referrer=twitpane.com)、[Kindle版](https://www.amazon.co.jp/takke-TwitPane-for-KindleFire/dp/B00LI9AWTG) という3種類を同一ソースから生成しています。

2013年頃から開発しているので `Eclipse+ADT` 時代にどうやっていたのかはもう既に覚えていませんが、`Android Studio` に移行して `Pro

元記事を表示

[Android] Roomの@RawQueryの使いどころ

## 利用すべきでないケース
使いどころの前に、まず使うべきではないケースについて説明します。[RawQueryのドキュメント](https://developer.android.com/reference/androidx/room/RawQuery)には以下のサンプルコードが記載されていますが、どれも基本的には利用すべきではないです。

– Observable Queries
– Returning POJOs
– POJOs with Embedded Fields
– Relations

適切にプレースホルダを利用すれば、これらのほとんどのクエリを他の`@Query`等のアノテーションでも実現できます。`@RawQuery`を利用してしまうとコンパイル時のバリデーションが出来ないため、Roomのメリットを捨てることになります。

## 使いどころ
Roomの他の機能を利用して、どうしても実現できない場合には`@RawQuery`の出番です。

### PRAGMA
[PRAGMA](https://sqlite.org/pragma.html)の利用が`@RawQuery

元記事を表示

Jetpack Composeが正式版になったのでQiitaビューアに機能を追加してみた

この記事は[NTTテクノクロス Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ntt-tx)の21日目です。

こんにちは、NTTテクノクロスの戸部@etctaroと申します。

普段は社内でモバイルアプリ開発関連の技術支援や社内向けのノウハウ記事執筆、社内研修講師活動、社内コミュニティ活動などを行なっています。
社内研修でも本記事のテーマである[Jetpack Compose](https://developer.android.com/jetpack/compose?hl=ja)を取り扱っています。

# はじめに
– Jetpack Composeは今年7月に正式にリリースされた、Androidアプリの宣言的UIフレームワークです。
– 一言で言えば、新しいUI開発手法となります。
– 12/1現在のStable版は1.0.5であり、次のバージョンである1.1系についても、ベータ版になっています。

※という、ざっくりな説明を **今年たくさんした気がします** 。

# 今回のサンプルコードにつ

元記事を表示

【android】折りたたみ式端末対応

この記事は[and factory.inc Advent Calendar 2021](https://qiita.com/advent-calendar/2021/andfactory) 21日目の記事です。
昨日は [@ticktakclock](https://qiita.com/ticktakclock) さんの [【Jetpack Compose】お気に入りボタンのタップアニメーションの作り方](https://qiita.com/ticktakclock/items/e671733d1c5daac10ac7) でした。

# はじめに
android10で折りたたみ式端末のサポートが正式に始まり、OPPOから13万円台の折りたたみスマホが発表されるなど、折りたたみ端末が身近になりつつある昨今。
GoogleDevelopers[折りたたみ式端末に対応したアプリの作成](https://developer.android.com/guide/topics/ui/foldables?hl=ja)から、どう対応していくのかを見てみます

# [序文](https://develo

元記事を表示

Androidでもシェーダーでモニョモニョしたい!

こんにちは!tkhsktです。
昨今のオシャレWeb界隈ではWebGL(OpenGL)がたくさん使われていますが、AndroidやiOSではあまり話を聞かないな〜と思ったのでやってみました。

## OpenGL ES実行環境の構築

AndroidでOpenGL ESを使う場合、`GLSurfaceView`を利用することが多いと思います。が、`GLSurfaceView`では生に近いOpenGLの設定を書く必要があるため、OpenGLの知識がないとかなりキツいです。

### ShaderView

そんなOpenGL ESの辛さを(一部)解決してくれるのが、[appspell/ShaderView](https://github.com/appspell/ShaderView)です。これは、[TextureView](https://source.android.google.cn/devices/graphics/arch-tv?hl=ja)をベースに作られたカスタムビューで、シェーダーを簡単に扱うことができます。
本記事では、この`ShaderView`を使ってモニョモニョし

元記事を表示

[Android]Applicationクラスとは何か?

##この記事は
質問箱でも、聞かれたことのある

「Applicationクラスってなんですか?」

に対する回答を記事にまとめてみます。
##Applicationクラスとは?
まず、Applicationクラスを「全体」のことと捉えてください。
そうすると、イメージがつくかなと思います。

実際の動きとしては、Androidアプリが起動した時に最初にインスタンス化されるクラスです。

このクラスでは、アプリ全体で用いる設定をこのクラスで行います。
例えば、RoomなどのローカルDBの呼び出しやHiltのトリガーなどなど。

ちなみに、不要であればApplicationを継承したクラスをわざわざ作らなくても大丈夫です。

##まとめ
Applicationクラス is 全体.
##参考
https://guides.codepath.com/android/Understanding-the-Android-Application-Class

元記事を表示

【Flutter】AdMob広告のアプリID,ユニットIDをdebug/releaseビルドで切り替える

ちょっと想像してみてください。

Flutterで作ったアプリで儲けたい!そう考え、AdMob広告をつけることにしたあなた。
開発中エミュレータを使用するため、AdMob広告のIDはテスト用のものを設定します。

アプリを頑張って作って、審査も通って、よし、リリースだ!
そんな時ふと気づきます。
「あれ、AdMob広告のID,本番用にしたっけ。。。?」

こんな経験、ありませんか?(私はあります。)

IDを変えるのを忘れなければ済む話ではあるんですが、
リリースにあたっての作業はかなり多く、IDを変える、のような細かいタスクは忘れやすいです。
また、IDを変える作業は結構手間でミスも発生しやすいです。
なので、この作業、自動でできるように検討しました。

本記事では、AdMob広告のアプリID,ユニットIDをdebug/releaseビルドで切り替える方法について解説します。
具体的には以下を解説します。

– アプリID の切り替え
– iOSの場合
– Androidの場合
– ユニットIDの切り替え

設定はちょっと手間ですが、一度やってしまえば、自分で変え

元記事を表示

OTHERカテゴリの最新記事