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

Android関連のことを調べてみた2021年11月09日
目次

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 未満の場合はダイアログで選択。

元記事を表示

【Flutter】Statefullなカウンターアプリをhooks_riverpod+state_notifier+freezedでリファクタリングする

FlutterのNullSafetyがstableになってしばらくたち、最近になってriverpodがstableになったので、記念にhooks_riverpod + state_notifier + freezedの使い方を最低限記載しておきます。
プロジェクトを作った時に作られるカウンターアプリを上記パッケージを使って実現するようにリファクタリングしていきます。

# tl;dr

– flutterの初期アプリをhooks_riverpod+state_notifier+freezedを使うようにリファクタリングする
– 結論としては単機能なアプリでこんなに複雑にやると余計わかりずらい(趣旨としてはサンプルなので良いのですが、、、)
– freezedも無理やり使ったしhooksはさすがに使えなかったので、hooks特有の機能については本記事のスコープ外

#### 完成版の全コード

https://github.com/tokku5552/flutter_riverpod_sample/tree/1.0.0

## 環境
– Android Studio

“`yaml:

元記事を表示

Android Studioでビルドエラーと格闘する

# はじめに
2016年頃まで自作のAndroidアプリを作って、[Google Play](https://play.google.com/store/apps/developer?id=hamham)に公開していました。
2021年の某日。突然Googleから**「ご対応のお願い: Google Play のポリシーをアプリが遵守していません」**とのメールがきて、アプリがストアから削除されてしまいました。
最後のアプリのアップデートをしてから5年も経って、突然こうなったということは、**Google Play側のデベロッパープログラムポリシーの変更に追随できておらず放置していたということが原因**と考えられます。
幸い、ポリシーに違反していた部分は軽微だったので修正自体は難しくなさそうです。
ポリシー違反部分を修正して再アップすればよいのですが、なんせ5年も前なので、開発環境を整えていたPCは手放してしまったし、アプリのビルドやストアへの公開方法も忘れてしまっている状態です。
残っているのはzipで固められた当時のソースコードのみ。

ということで、開発環境を構築して、アプリをビ

元記事を表示

[Jetpack Compose] Paging Libraryを使わずに無限リストを実装する

末尾までスクロールすると追加の要素を読み込んでいくやつです。
Androidではこの無限スクロールを実装するのにPaging3を使うことで簡単に(?)実装することができます。

https://developer.android.com/jetpack/androidx/releases/paging

Jetpack Compose対応もされているので、そちらを使って無限スクロール実装するのがベターな気がしますが、それを使わなくともかなりシンプルに実装することができましたので紹介します?‍♂️

## 完成図

25件ずつ追加で読み込んでいます。サンプルコードなので通信処理はなしでListのジョインをしているのでローディング表示なくスルスルいきます。
末尾にはローディングがあるので読み込みに時間がかかる場合は見える感じです。

元記事を表示

M1 MacでAndroidエミュレーターを起動する

# はじめに

Flutterのアプリ開発をしようとしてめちゃくちゃハマりました。

## Flutterのチュートリアル

https://flutter.dev/docs/get-started/test-drive?tab=terminal

iOSはこれ見ながらやれば大丈夫です。

問題はAndroid

## 何が問題か

手順の途中で `flutter doctor` でそれぞれのプラットフォームが起動準備できているか確認します。

iOS であれば XCode, Android であれば Android Studioを事前にインストールしておきましょう。

しかし、AndroidについてSDKがないと怒られました。

## 解決策

SDKを手動で入れます。

まず、JDKを入れましょう。とりあえず brew で最新stableをインストールしましょう。

“`sh
$ arch -arm64 brew install openjdk
“`

次に sdkmanager と呼ばれる Android SDK用のCLIをインストールします。

https://develo

元記事を表示

kotlinで画面のタップイベントを実行する方法

kotlin学習中メモ

## onTouchEventを設定

“`MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

// 画面タッチ処理はoverride fun onTouchEventの中に書く
override fun onTouchEvent(event: MotionEvent?): Boolean {
// ここに処理を追記していく
return super.onTouchEvent(event)
}
}
“`

画面をタップした時になんらかの処理をしたい場合は、onTouchEventを設定してその中に実行したい処理を書いていけばOK

試しに

元記事を表示

コマンド飛ばして処理させたいーServerClient編

#イントロ

BroadcastReceiverでコマンドを送れるが、
他のアプリとの通信どうやるの?ってのがあって。
ネットワークでやったほうが面倒くさくね?ってことでServerーClient編

Serverで待ち受け
(Serverボタンをクリック)
メッセージ送信
(Clientをクリック)
※別端末

#環境

元記事を表示

Android開発でハードコーディングすると怒られるのでstrings.xmlを使う

レイアウトファイルのactivity_main.xmlで以下のようなハードコードをした場合にAndroidStudioやIDEAで怒られます。

“`kotlin

android:text=”クリック”
“`

strings.xml

“`kotlin

addApp
クリック // 追加

“`

strings.xmlに上記のように記述すると、“`@string/btnName “`
というような書き方で定義した文字列を取得することができます。

“`kotlin

元記事を表示

Androidアプリ kotolin学習のためソシャゲイベントログアプリを作る01 TOP画像の設定

kotolin学習用にAndroidアプリを作成してみようと思う。
某ソシャゲ某イベントの記録アプリ。
今回はTOP画面に画像を設定するところをやってみる。

プロジェクト名:AncientBattlefield
開発ツール  :Android Studio – Arctic Fox | 2020.3.1

##1.画像格納場所
以下フォルダ配下に保存する。
・C:\Android\project\AncientBattlefield\app\src\main\res\drawable

保存したファイル名は以下
・top.png

##2.activity_main.xmlの編集
activity_main.xmlの格納先は以下画像の通り。
青枠になっている箇所を選択してコード表示にする。
赤枠の行を追加する。
![01_code.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2255947/760b092c-ba0b-7ba1-c4c9-298c61091621.jpeg)

ファイル選択後、表示

元記事を表示

コマンド飛ばして処理させたい-BroadcastReceiver編

#イントロ
ボタンを押すとBroadcastが飛ぶが、、adbコマンドは受信できない

adbコマンド

“`
C:\Users\su5fi>adb -s 192.168.1.26:38233 shell am broadcast -a ORIGINAL_ACTION -es “d” “d”
Broadcasting: Intent { act=ORIGINAL_ACTION flg=0x400000 pkg=d (has extras) }
Broadcast completed: result=0
“`

#環境
Windows10(64bit)
Android11

#

“`AndroidManifest.xml

元記事を表示

Firebase Authenticationでアカウントが作成出来ないときの原因はこれかも?…

#はじめに
躓いた人のための、軽いメモ用に書くので、そもそも「Firebase Authenticationが何か」などは説明しません。要点絞って説明します。

##開発環境
Android Studio(Java)

##僕が躓いたところ
Firebase Authenticationの「メール/パスワード認証」で躓きました。(詳しいコードは下をご覧ください。)

https://firebase.google.com/docs/auth/android/password-auth?hl=ja

下の画像のようにパスワードを適当に設定して、アカウントを作ろうとしても、はじかれました。

##解決法
どうやら、認証のときのパスワードは「6文字以上」でないと、いけないみたいです。

【Android】初めてSpinnerを使ってみる

今回は、初めてAndroidのSpinnerを使う機会があったので、その使い方についてまとめてみました。
Spinnerとは画像のように複数の選択肢をドロップダウンで表示する画面部品のことです。

Screenshot_20211105-164307.png

## 環境
kotlin: 1.5.31
Android Studio: Android Studio Arctic Fox 2020.3.1 Patch3

## 基本的な使い方
### Spinnerの作成
まずはViewにSpinnerを作成します。
SpinnerはAppCompatSpinnerの部分です。

“` activity_main.xml

元記事を表示

Kotlinプロジェクトでどこまでキーを隠蔽化できるか(その3:ProGuardの利用)

Kotlinを使ってAndroidアプリを作った際に、NCMBのアプリケーションキーとクライアントキーをどこまで隠蔽化できるのか試しています。[前回はC++を使ってコンパイル、隠蔽化する方法を試しました](https://qiita.com/goofmint/items/09c78dcf1fd664b85a37)。今回は難読化を実現するProGuardを使ったらどうなるのか試しています。

## ProGuardについて

[ProGuard](https://www.guardsquare.com/proguard)はAndroid Studio標準で使えるコードの圧縮、最適化、難読化を行うライブラリです。今回は特にオプションを指定せず使ってみました。

## デバッグ環境でも適用する

デフォルトではリリースビルドでのみProGuardが適用されるので、デバッグ環境でも使えるようにします。app/build.gradleを編集します。

“`
android {
// 省略
buildTypes {
release {
mi

元記事を表示

Kotlinプロジェクトでどこまでキーを隠蔽化できるか(その2:C++の利用)

[前回の記事](https://qiita.com/goofmint/items/beb81edbefd252de9ba2)では単純にAPKファイルを作成し、その中からアプリケーションキーやクライアントキーが見つけられるのを確認しました。今回から、その隠蔽方法について解説していきます。

まず初回は(といっても一番正解に思えます)C++を使って隠蔽する方法です。

## Androidプロジェクトを作る

C++に対応するため、Androidプロジェクトを作成する際にNative C++を選択します。

![ScreenShot_ 2021-11-04 18.17.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/db7ec83c-8b27-a87c-e1aa-f5296136c359.png)

言語はKotlinで問題ありません。

![ScreenShot_ 2021-11-04 18.18.06.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Kotlinプロジェクトでどこまでキーを隠蔽化できるか(その1:逆コンパイルを試す)

NCMBではアプリケーションキー、クライアントキーの2つを使ってmBaaSとのデータ送受信を行います。この2つのキーを漏洩させないようにしなければいけません。とはいえ、デコンパイルが容易なAndroidアプリ(apkファイル)の場合、キーを何らかの形で隠す必要があるでしょう。ここでいう漏洩というのは、GitHubなどにAPIキーを載せないという話ではなく、Google PlayなどからDLされたAPKファイルでコードを閲覧できないようにする話になります。

今回はまず、コード中にキーを記載して作成したapkファイルをデコンパイル(逆コンパイル)してみます。なお、今回はmacOSを使っています。

## jedコマンドは使えなくなっています

macOSではdex2jarを使ってdexからclassファイルにするのが基本だったようですが、Big surには対応していません。 `com.googlecode.d2j.DexException: not support version.` というエラーが出ます。

[Releases · DexPatcher/dex2jar](https:/

元記事を表示

ViewModelでAssistedInjectをするときは拡張関数を作ると便利

ViewModelの初期化時にFragmentから値を渡したいときにAssistedInjectを使いますが、ボイラープレートが増えてしまって非常に煩わしかったりします。そんなとき、以下のExtensionを作ると非常に便利です。

“`kotlin
inline fun Fragment.assistedViewModel(
crossinline viewModelProducer: (SavedStateHandle) -> T
) = viewModels {

@Suppress(“UNCHECKED_CAST”)
object : AbstractSavedStateViewModelFactory(this, arguments) {
override fun create(
key: String,
modelClass: Class,
handle: SavedS

元記事を表示

「Android 絵文字ポリシー」のためにAndroidアプリに実装しないといけないもの

## はじめに

先日、Google Playのアプリ開発者に向けて「Android 絵文字ポリシー」の追加が発表されました。
これにより、今後のAndroidアプリは常に最新のカラー絵文字フォントを利用する必要が出てきました。
Androidアプリ開発者がしなければならないことについて簡単に記事を書きました。

お知らせの詳細は「[デベロッパー プログラム ポリシー: 2021 年 10 月 27 日のお知らせ](https://support.google.com/googleplay/android-developer/answer/11190649#emoji_preview)」をご確認ください。

かなり多くのアプリに影響があります。
アプリの文字列リソースに絵文字は使っていない&ユーザー名などユーザーが任意にテキストを入力できる場所はない&アプリに配信されるテキストに絵文字が含まれることはない、というアプリはこれを避けることができます。
なのでSNSのようなテキストコミュニケーション主体のアプリだけではなく、ゲームアプリなどにも影響のある話になっています。

発効は2022

元記事を表示

端末のHMSバージョンの取得方法

端末のHMSバージョンは次のコードで取得できます。

“`java
public String getHmsVersion(Context context) {
String version = null;

try {
PackageManager packageManager = context.getPackageManager();
if (null != packageManager) {
PackageInfo packageInfo = packageManager.getPackageInfo(“com.huawei.hwid”, 0);
if (null != packageInfo) {
version = packageInfo.versionName;
}
}
} catch (PackageManager.NameNotFoundException exception) {

元記事を表示

OTHERカテゴリの最新記事