- 0.0.1. Android 検証端末10選(2021年春)
- 0.0.2. Android studioでJacocoを使って、手動で一つずつテストケースを実行して、カバレッジレポートを作成する方法
- 0.0.3. 【SikuliX】スマホゲームの自動化(環境構築)
- 0.0.4. KotlinでViewを動的に動かす
- 0.0.5. Androidのライブラリモジュールにビルドプロパティを渡す
- 0.0.6. [Unity]Android向けIL2CPPビルドエラー:UnityLinker.exe did not run properly!
- 0.0.7. [Android × Kotlin]端末の位置情報がOnかOffを判断
- 1. 位置情報をOnかOffを判断
- 2. オンラインかオフラインか
- 2.0.1. Android端末におけるHUAWEI IDログイン機能の詳細実装手順10-GMS端末で権限取り消し
- 2.0.2. Android端末におけるHUAWEI IDログイン機能の詳細実装手順9-GMS端末でログアウト
- 2.0.3. Android端末におけるHUAWEI IDログイン機能の詳細実装手順8-GMS端末でログイン2
- 2.0.4. Android端末におけるHUAWEI IDログイン機能の詳細実装手順7-GMS端末でログイン1
- 2.0.5. Android端末におけるHUAWEI IDログイン機能の詳細実装手順6-HMS端末で権限取り消し
- 2.0.6. Android端末におけるHUAWEI IDログイン機能の詳細実装手順5-HMS端末でログアウト
- 2.0.7. Android端末におけるHUAWEI IDログイン機能の詳細実装手順4-HMS端末でログイン
- 2.0.8. Android端末におけるHUAWEI IDログイン機能の詳細実装手順3-HMS判定
- 2.0.9. Android端末におけるHUAWEI IDログイン機能の詳細実装手順2-実装準備
- 2.0.10. Android端末におけるHUAWEI IDログイン機能の詳細実装手順1-ソリューションの概要
- 2.0.11. registerForActivityResultで「attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.」
- 2.0.12. Android アプリが否承認されたときにやったことメモ
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じゃなくてもよいです。# ラ
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 アプリの審査で「否承認」にされたときにやったことをメモとして残しておきます。
# 1. 審査提出したら否承認のメールがきた
既にストアに公開している Android アプリを更新しようと思い、いつもどおり aab ファイルを作り
Google Play Console からポチポチと審査提出したところ、`ご対応のお願い: Google Play のポリシーをアプリが遵守していません`
こんな件名のメールがきました。
以下はメールのスクリーンショットです。
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた