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

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

Android 検証端末10選(2021年春)

# はじめに

Android端末のスペックを眺めるのが趣味の @KentaHarada です。

みなさんはAndroidアプリの検証をする時どんな機種を使っていますか?
Androidアプリ開発者の方は、とりあえずPixelを使っているという方も多いと思います。
でも、Pixel以外にも多種多様なAndroidが発売されていますよね。時間と予算が許せば
なるべく多くの端末で検証したいところですがそうもいきません。売れ筋の端末を
2〜3機種見繕って検証する、というケースも多いかと思います。

そこで今回は、検証に使うと良さそうなAndroid端末10機種選定してみました。
私個人の好みや主観も入っていますが、検証端末選びの参考にして頂ければ幸いです。

※選定した端末は**2021年4月**の情報をベースにしています。

# 選定ポイント
選定のポイントは以前書いたこちらの記事にまとめています。

https://qiita.com/KentaHarada/items/2baa4702f1dfda0c6ada

特に重視したのは以下のポイントです。

1. 素のAndroid

元記事を表示

Android studioでJacocoを使って、手動で一つずつテストケースを実行して、カバレッジレポートを作成する方法

Android studioでtestCoverageEnabledフラグをtrueにしたら、createDebugCoverageReportという機能が使えます。
しかしcreateDebugCoverageReportを実行したら、全てのUnit test / Instrumented testのテストケースが実行されます。環境に依存するテストケース(Internet、周辺機器など)がFailになってしまいます。

本文は手動でカバレッジレポートの作成方法を説明します。

#実行環境
・Android Studio 4.1.1
・compileSdkVersion 29
・Gradle version 6.5

#jacoco.gradleの作成
appあるいはmoduleのbuild.gradleと同じフォルダーにjacoco.gradleを作成します。

“`jacoco.gradle
apply plugin: ‘jacoco’
jacoco {
toolVersion = “0.8.4”
reportsDir = file(“$projectDir/re

元記事を表示

【SikuliX】スマホゲームの自動化(環境構築)

# はじめに
最近のスマホゲームでよくあるのが何度も周回を繰り返すゲームです。
しかし、ポチポチやるのも時間が勿体ないし、キリがない。
単純作業は自動化する習慣がついているので、自動化するための環境構築を備忘録として残します。

#使用するもの
・PC(Windows10 64bit)
・Java 64bit
・SikuliX(http://sikulix.com/)
・androidエミュレータ(Nox, BlueStacks等)

#手順
①Java 64bitをインストール
 SikuliXを動作させるためには、Java 64bit版が必要になるため、Windows オフライン (64ビット)を以下のページよりダウンロードし、インストールする。
 https://java.com/ja/download/manual.jsp
 
②SikuliXをインストール
 https://raiman.github.io/SikuliX1/downloads.html
 から以下ファイルをダウンロードし、任意の保存場所に配置する。
 - sikulixapi.jar
 - jython

元記事を表示

KotlinでViewを動的に動かす

KotlinでViewを定義する

“`kotlin
val button: Button = Button(this)
// 変数名 Viewの種類 左と同じ
“`
これによりxmlファイルでボタンを設置したときのようにActivity上にButtonを置く準備ができた

xmlファイルでLainerLauputを定義する

“`xml

“`
これは、普通にXMLファイルでViewをドラッグアンドドロップするだけでよい
この時初期状態では、LinerLaoutにidがついていないので、コードか、GUI上で好きなidを設定しましょう

元記事を表示

Androidのライブラリモジュールにビルドプロパティを渡す

# やりたいこと
Androidというか、Java/KotlinでGradle使ってビルドしている場合の話かと思います。

ライブラリモジュールがあって、以下のように`BuildConfig`を使ってデバッグフラグなどを制御している。

“`lib/build.gradle
android {
//…

defaultConfig {
buildConfigField(“boolean”, “DEBUG_FLAG_FOO”, “false”)
buildConfigField(“boolean”, “DEBUG_FLAG_BAR”, “false”)
buildConfigField(“int”, “DEBUG_RESPONSE”, “1”)
}
“`

で、これを、ビルドコマンドでコンソールからビルドする時に指定してビルドしたい。
という場合にどうすれば良いのか調べたので、そのメモです。

# 前提

ライブラリプロジェクトはアプリプロジェクトにincludeされている形です。publicなリポジトリに公

元記事を表示

[Unity]Android向けIL2CPPビルドエラー:UnityLinker.exe did not run properly!

前言

少しでも、やくになってたらそれで楽しい!

Android向けIL2CPPビルド試した環境

##### Windows
Unity2018.4.26f1, Unity2018.4.32f1, Unity2020.2.3f1

最初何回は問題なくビルドできてましたが、一回失敗したら、後からビルド成功率がひくい、たが、成功する時もありました。

##### Mac
Unity2018.4.26f1

成功できず。。

### よく出るエラーメッセージ
省略…UnityLinker.exe did not run properly!…省略

省略…Temp\StagingArea\assets\bin\Data\Managed’, Native error=指定されたファイルが見つかりません。…省略

みたいのがでてる。

解決モードに入ってみた!

ネットからいろいろ検索してみたら、同じ問題にあった人がいっぱいいた!。(なんか少し嬉しい、ひとりじゃない!みんながいる!)
ネットの情報通り**Windos環境**で、いろいろいじってみた所解決できな

元記事を表示

[Android × Kotlin]端末の位置情報がOnかOffを判断

位置情報をOnかOffを判断

“`kotlin.kt
private fun isLocationEnabled(): Boolean {
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
return LocationManagerCompat.isLocationEnabled(locationManager)
}
“`

オンならtrueオフならfalseが返ってきます

元記事を表示

[Android×kotlin]端末がオンラインかオフラインを判断

オンラインかオフラインか

タイトルの意味のままです

“`kotlin.kt
private fun isOnline(): Boolean {
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo?.isConnected == true
}
“`

オンラインならtrueオフラインならfalseが返ってきます

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順10-GMS端末で権限取り消し

# REST APIによる権限取り消し機能の実装方法
次のAPIでログイン時に返ってきたアクセストークン(IDトークンではない)をパラメータとして渡し、権限を取り消します。

API:https://oauth-login.cloud.huawei.com/oauth2/v3/revoke
メソッド:POST
パラメータ:

|パラメータ名|値|
|:—:|:—|
|token|https://oauth-login.cloud.huawei.com/oauth2/v3/token のレスポンスのaccess_token|

“`kotlin:HmsHuaweiIdLogic.kt
override fun cancelAuthorization(context: Context, accessToken: String) {
val queue = Volley.newRequestQueue(context)

val postRequest: StringRequest = object : StringRequest(
Method.

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順9-GMS端末でログアウト

# REST APIによるログアウト機能の実装方法
ログアウトのREST APIがありません。そのため、ログアウト時に行うのは、ユーザー情報を非表示にするなどの処理だけでよいです。

“`kotlin:NonHmsHuaweiIdLogic.kt
override fun signOut() {
// ローカルのログイン情報を消す
}
“`

# シリーズ
– [Android端末におけるHUAWEI IDログイン機能の詳細実装手順1-ソリューションの概要](https://qiita.com/Rei_2020/items/e02814bd688a41ab8702)
– [Android端末におけるHUAWEI IDログイン機能の詳細実装手順2-実装準備](https://qiita.com/Rei_2020/items/2eb9dada38cdfc2729ef)
– [Android端末におけるHUAWEI IDログイン機能の詳細実装手順3-HMS判定](https://qiita.com/Rei_2020/items/285107103be525ce3f98)
– [A

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順8-GMS端末でログイン2

# IDトークンからユーザー情報を取得する方法
IDトークンはJWT(JSON Web Token)です。それをデコードする方法が2つあります。

1.HUAWEI Account Kit serverが提供しているAPI(デバッグ以外は非推奨)
2.JWTDecode.Androidでデコード

### HUAWEI Account Kit serverが提供しているAPI
API:https://oauth-login.cloud.huawei.com/oauth2/v3/tokeninfo
メソッド:POST
パラメータ:

|パラメータ名|値|
|:—:|:—|
|id_token|IDトークン|

“`kotlin:NonHmsHuaweiIdLogic.kt
private fun decodeIdToken(
context: Context,
idToken: String
) {
val queue = Volley.newRequestQueue(context)

val postRequest: Strin

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順7-GMS端末でログイン1

# REST APIによるログイン機能の実装方法
ログイン機能は3つの処理に分けられます。
1.ログイン画面を表示する処理
2.ログイン結果(認証コード)を受け取る処理
3.認証コードをIDトークンに交換する処理

### ログイン画面を表示する処理
まず、Webログイン画面のリンクを生成します。
リンク:https://oauth-login.cloud.huawei.com/oauth2/v3/authorize
パラメータ:

|パラメータ名|値|
|:—:|:—|
|client_id|AppGallery Connectのプロジェクト設定に表示されるApp IDです。
AGCUtils.getAppId()を使えば、agconnect-services.jsonの中の”app_id”の値を取得できます|
|scope|”openid+profile”|
|response_type|”code”|
|access_type|必須ではないが、”offline”を渡せばリフレッシュトークンも返ってきます|
|redirect_uri|AppGallery Conne

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順6-HMS端末で権限取り消し

# Android SDKによる権限取り消し機能の実装方法
1.HUAWEI ID認証サービスのcancelAuthorization()を使って権限を取り消します。
2.処理結果のコールバックをaddOnCompleteListener()で追加すれば、権限取り消し結果(isSuccessful)を受け取れます。

“`kotlin:HmsHuaweiIdLogic.kt
override fun cancelAuthorization(context: Context) {
authManager?.let {
it.cancelAuthorization().addOnCompleteListener { task ->
if (task.isSuccessful) {
// 権限取り消しが成功したときの処理
} else {
// 権限取り消しが失敗したときの処理
}
}
}
}
“`

#

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順5-HMS端末でログアウト

# Android SDKによるログアウト機能の実装方法
1.HUAWEI ID認証サービスのsignOut()を使ってログアウトします。
2.ログアウト処理の成功時コールバックと失敗時コールバックを追加します。
3.成功した場合、アプリの仕様次第、表示中のユーザー情報を非表示にするなどの処理を行います。

“`kotlin:HmsHuaweiIdLogic.kt
override fun signOut() {
authManager?.let {
val signOutTask: Task = it.signOut()
signOutTask.addOnSuccessListener {
// ログアウトが成功したときの処理
}.addOnFailureListener { exception ->
// ログアウトが失敗したときの処理
exception.printStackTrace()
}
}
}
“`

#

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順4-HMS端末でログイン

# Android SDKによるログイン機能の実装方法

ログイン機能は2つの処理に分けられます。
1.ログイン画面を表示する処理
2.ログイン結果を受け取る処理

### ログイン画面を表示する処理
1.HuaweiIdAuthParamsHelperでログインパラメータを生成します。
2.HuaweiIdAuthManager.getService()でHUAWEI ID認証サービスを取得します。
3.startActivityForResult()でHUAWEI IDのログイン画面(別Activity)を開きます。

“`kotlin:HmsHuaweiIdLogic.kt
companion object {
private const val REQUEST_CODE_SIGN_IN_AUTHORIZATION_CODE = 1000
}

private var authManager: HuaweiIdAuthService? = null

override fun signIn(activity: Activity) {
val param = Hu

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順3-HMS判定

# HMS判定方法
HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable()で判定します。
端末にHMSが入っている、戻り値がtrueになり、HMSが入っていなければ、戻り値がfalseになります。

“`kotlin
if (com.huawei.hms.api.ConnectionResult.SUCCESS == HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(context)) {
// HMSあり
// HMS Account KitのAndroid SDKを使います
} else {
// HMSなし
// HMS Account KitのREST APIを使います
}
“`

Strategy パターンを使う場合、ソースコードが次のようになります。

“`kotlin:MainActivity.kt
private lateinit var huaweiIdLogic

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順2-実装準備

# HMS Account Kitの利用準備
HMS Account Kitを利用するのに、Android SDKとREST APIを問わず、まずAppGallery ConnectでAccount Kitのサービスを開通しておく必要があります。開通手順については“[HMS Account Kit実装入門](https://qiita.com/Rei_2020/items/81001ffc6299e56401c8)”をご参照ください。

ここで気を付けなければならないのは、リダイレクトURIを設定することです。
このURIはREST APIを利用するのに必要なので、必ず設定しなければなりません。ただ、必ずしも実在しているURIじゃなくてもよいです。

スクリーンショット 2020-10-01 233255

# ラ

元記事を表示

Android端末におけるHUAWEI IDログイン機能の詳細実装手順1-ソリューションの概要

# [HUAWEI IDログイン機能](https://developer.huawei.com/consumer/jp/doc/overview/HMS)
HUAWEI IDログインはファーウェイが提供しているソーシャルログイン機能です。主にHMS端末で使われているため、GMS端末では利用できないと勘違いしやすいですが、ちゃんと利用できます。

# HMSとGMS両方に対応したHUAWEI IDログイン実装のソリューションの概要
ソリューションの基本概念は単純です。

![HMS Account Kit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704548/04c05450-d65c-5ffe-a13e-20dd4d2f76a0.png)

1. 端末にHMSが入っていれば、[HMS Account KitのAndroid SDK](https://developer.huawei.com/consumer/jp/doc/development/HMSCore-Guides-V5/android

元記事を表示

registerForActivityResultで「attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.」

「AndroidX Activity 1.2.0-alpha02 と Fragment 1.3.0-alpha02」で導入された`registerForActivityResult`を使ってみようと思って、実装してみました。

“`build.gradle
plugins {
id ‘com.android.application’
id ‘kotlin-android’
id ‘kotlin-kapt’
}

android {

buildFeatures {
dataBinding true
}
}

dependencies {

implementation “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version”
implementation ‘androidx.core:core-ktx:1.3.2’
implementation ‘androidx.appcompat:appcompat:1.2.0’
implement

元記事を表示

Android アプリが否承認されたときにやったことメモ

# 0. 概要

Android アプリの審査で「否承認」にされたときにやったことをメモとして残しておきます。

スクリーンショット 2021-03-31 18.15.11.png

# 1. 審査提出したら否承認のメールがきた

既にストアに公開している Android アプリを更新しようと思い、いつもどおり aab ファイルを作り
Google Play Console からポチポチと審査提出したところ、

`ご対応のお願い: Google Play のポリシーをアプリが遵守していません`

こんな件名のメールがきました。

以下はメールのスクリーンショットです。

スクリーンショット 2021-03-31 17.53.11.png

  • OTHERカテゴリの最新記事