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

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

【Android】APKをデコンパイルしてみる

## はじめに
最近Android開発を始めて、絶賛Kotlin勉強中の者です。今回ソースコードを難読化してbuildすることがあり、本当に難読化できているのかを確かめてみたかったので、デコンパイルすることにしました。ただ、なかなか思うようにデコンパイルができなかったので、成功した方法を備忘録として残しておきます。

今回は、下図の通り、build前のソースコードをKotlinで書いたので、`.kt`ファイルをbuildして`.apk`ファイルになったAndroidのコードをデコンパイルし、`.java`ファイルを作成しました。

![デコンパイル図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546572/5645baef-472a-2373-a71b-fe26d1c46f29.png)

## 環境・バージョン

+ macOS Catalina バージョン 10.15.6

## 失敗した方法
調べるとよく出てくる`dex2jar`と`jad`を使う方法です。
この方法が定番なのかなと思

元記事を表示

Android で Youtube の動画を再生する[Kotlin]

# つくるもの

YoutubeAPI を使って動画再生するためには、そもそも端末に Youtube アプリが入っている必要があるとかで、Youtube アプリを必要としない Youtube 動画プレイヤーを実装する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252342/950807dc-7093-763d-1118-b8dbe6ca13c4.png)

# 今回やったこと

できることは [AndroidでYoutubeの動画を再生する](https://qiita.com/TaigaNatto/items/d3ff98961c346098eaf7) とほぼ同じ。
このコードを参考に、下記の内容を追加実装した。

– Kotlin化
– ExoPlayer を中心に各ライブラリの更新
– Youtube動画ID から直接再生

# 方法

ここのソースで動かせる
https://github.com/tktcorporation/ExoPlayerYoutubeSample

元記事を表示

Goでローカルサーバーを立てた~ファイルダウンロード~

初めに
===
Androidアプリからリクエストを投げて、GoでWebServerを立てたローカルサーバー上のファイルをダウンロードする

環境
===
PC Windows10
Android Studio 4.0
Kotlin 1.3.72
Android端末 Emulator(API Level 29)
Go 1.11.1

構成図
===
![go_server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487320/e8771fc0-f61a-3472-8ab4-5f998bb3e704.png)
Androidアプリからファイル名を指定して、サーバー側にリクエスト、サーバー側に保存されているファイルとステータスコードを返却

実装
===
ローカルサーバー

“`Server.go
package controllers

import (
“fmt”
“io/ioutil”
“net/http”
“os”
“strconv”
“strings”
)

fu

元記事を表示

MediaCodecのencode

これ:http://tokyo.supersoftware.co.jp/code/6104

[うごかした](https://1drv.ms/u/s!ApO4wsxFJBbVulT15Cn8RGGgMzFe?e=94kJfV)

元記事を表示

#14 Kotlin Koans Conventions/In range 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans/In rangeの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 contains()関数

[Operator overloading](https://kotlinlang.org/docs/reference/operator-overloading.html)

`a in b`とういう表現で`b.contains(a)`のように使用します。

#3 Conventions/In rangeの解説

[Kotlin Koans Conventions/In range](https://play.kotlinlang.org/koans/Conventions/In%20range/Task.kt)の解説です。
随時本サイトの内容を引用させていただきます。

右側の本文を見て

元記事を表示

#15 Kotlin Koans Conventions/Range to 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans/Rnage toの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 rangeTo()関数とcontains()関数

[Operator overloading](https://kotlinlang.org/docs/reference/operator-overloading.html)
いずれもoperator修飾子がついた関数です。

`a .. b`という表現で`a.rangeTo(b)`のように使用します。

`a in b`とういう表現で`b.contains(a)`のように使用します。

#3 Conventions/Range toの解説

[Kotlin Koans Conventions/Range to](https://play.kotlinlang.org/

元記事を表示

Android Expand Horizontallyはみだしちゃう

[Codelabs for Android Developer Fundamentals 1.2 Part B: The layout editor]
(https://codelabs.developers.google.com/codelabs/android-training-layout-editor-part-b/index.html?index=..%2F..%2Fandroid-training#0)
を進めていて、あれうまくいかない

言われた通りにやってるんだけどな〜 たぶん

これはConstraintLayoutに関するものです。

#問題点

####期待する結果

2つのButtonを選択した状態でツールバーのExpand Horizontallyをクリックすると
均等に配置されるよ。と言うもの

![スクリーンショット 2020-10-22 18.38.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677719/19f53b84-6876-49b5-58e8-d2f3f

元記事を表示

#13 Kotlin Koans Conventions/Comparison 解説

#1 はじめに

Kotlin公式リファレンスのKotlin Koans/Comparisonの解説記事です。

Kotlin Koansを通してKotlinを学習される人の参考になれば幸いです。

ただし、リファレンスを自力で読む力を養いたい方は、
**すぐにこの記事に目を通さないで下さい!**

一度各自で挑戦してから、お目通し頂ければと思います:fist:

#2 Operator overloading

まずは、公式リファレンスの例から見てみましょう。

“`
data class Point(val x: Int, val y: Int)

operator fun Point.unaryMinus() = Point(-x, -y)

val point = Point(10, 20)

fun main() {
println(-point)
}

“`

実行結果は、`Print(x = -10,y = -20)`となります。

順を追って説明していきます。

まず、3行目の変数pointに`x = 10`、`y = 20`のプロパティを持ったPointイ

元記事を表示

HMSアプリ開発コンテストでHMSを理解しよう

# HMSアプリ開発コンテスト
最近HMSアプリ開発は勢いを増しています。現在すでに170ヶ国以上HMSが利用できるようになり、6万個以上のアプリがHMSを利用しており、140万人のHMS開発者がいます。

また、つい最近ファーウェイは[Huawei HMS App Innovation Contest](https://developer.huawei.com/consumer/en/activity/digixActivity/digixdetail/101592474457998399?pageIndex=5&regionId=Asia%20Pacific)を開催しました。多くの開発者がこのHMSアプリ開発コンテストに参加しました。現在、HMSアプリの受付がすでに締め切られましたが、アプリ公開と公開投票フェーズに入りました。

このコンテストでは二つうれしいことがあります。一つはHMSのポテンシャルを知ることです。もう一つは投票に参加すれば、アマゾンギフト券がもらえる可能性があることです。

Huawei HMS App Innovation Contest:[https://d

元記事を表示

kotlinx.serializationでCustomSerializerを作り、ライブラリクラス・sealed classのdeserializeを行う

#はじめに
kotlinx.serializationの1.0.0(stable)が出ましたね!
以前からRetrofitと組み合わせて通信レスポンスのマッピングに利用していたのですが、CustomSerializerを作りたくなって調べて試したのでそのメモです。
※あくまで自分の理解なので、足りていない部分やパフォーマンスが良くない実装があるかもしれません。
Serializerについてのメモなので、serializationの導入などは省きます。

“`kotlin:利用バージョン
org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0
“`

# 1. あるJsonオブジェクトをライブラリのクラスにパースして使いたい

あまり遭遇するケースでは無いかもしれませんが、Serializerの手始めとして。

“`json:パースしたい通信レスポンス
{
id: “00”,
name: “プリン”,
price: {
min: 200,
max: 500
}
}

元記事を表示

モバイル向けFlutterアプリをWeb対応するときに注意したいこと

# Platform判定はできない
Platform.isIOSなどで判定しているところは動かないので、その前段階でkIsWebでWebかどうかを判定する

# モバイル向けのsecure_strageのパッケージは非対応
アプリ内にログイントークンなど持ちたいから[flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage)プラグイン使うと思うけど、Webでは非対応なので[shared_preferences](https://pub.dev/packages/shared_preferences)プラグインを使う

# APIRequestがエラーになる
CROSサポート([参考](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-cors.html))を有効にする必要がある。

開発でテストするなら以下のChrome extensionをインストールしたら解決できる
https://chrome.go

元記事を表示

Flutter製アプリをAndroid向けにリリースしようと準備し始めたらエラーが止まらなかった

# やろうとしたこと
制作中だったアプリが一通り完成したため、Google Play Storeで公開するための準備を始めました。

# 起こった問題
ネット上の情報を頼りに作業を進めていくと、”Package name”を変更するタイミングが来るはずです。
私は

– app/build.gradle
– main/AndroidManifest.xml
– debug/AndroidManifest.xml

の3箇所を変更しました。
しかし、この Package name を変更した直後からよくわからないバグが発生しました。

# 解決方法
結論からいうと`MainActivity.kt`の1行目の Package name を修正し忘れていました。
[この記事](https://qiita.com/osamu1203/items/6adfab47e562f5e7d03b)が参考になります。

# 最後に
あまり多くの人に起きるエラーじゃないかなとも思いましたが、自分は結構時間を溶かしてしまったので同じ問題を抱えた誰かに届くといいなと思っています。

元記事を表示

【Kotlin】FirebaseのRemote Configを使ってみる

###はじめに
Androidアプリを作っていると変数を外部から操作したい事ってあると思うのですが、今回FirebaseのRemoteConfigを使って実装してみました。
初めて使ってみてとても簡単に実装できたので、今更感はあるかと思いますが備忘録として残しておこうと思います。
おかしなところなどあったらツッコミお願いします!

※Firebaseの導入部分は割愛しますので必要に応じてお調べください。

###準備

#####ライブラリを追加

“`kotlin:build.gradle(Module.app)
dependencies{
implementation ‘com.google.firebase:firebase-config-ktx:19.2.0’//追加
}
“`

#####Firebase側の設定

![コメント 2020-10-19 142446.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637123/46344580-9b85-363c-187c-7aa

元記事を表示

Android11 SDK30でpackage名を取得できなくなった問題

最近Android11になってから動作しない問題がちょくちょく続いてます。
皆さんはどうでしょうか??

前置きが長かったですが、さくっと修正方法紹介します。
パッケージのアクセス方法がAndroid11から変更されたみたいです。

## 従来のコード

“`
val packages: List = context.packageManager.getInstalledPackages(flag)
val packageNames: List = packages.map { it.packageName }
“`

## 追加
AndroidManifestに追加

“`


元記事を表示

Android(Pixel、Xperia、Galaxy、AQUOS)画面サイズ、ピクセル数早見表

#Androidスマートフォン画面サイズ一覧表です
1. 対象端末は2016年以降に発売している日本国内の端末です(※一部Pixelシリーズを除く)
2. キャリア別の派生端末は省略しているものがあります
3. 情報は2020/10/22時点のものとなります

## Pixelシリーズ

|機種名|型番|有機ELディスプレイ対応|画面サイズ|ピクセル数|アスペクト比|発売初期搭載iOS|最終対応iOS|発売年|Android11.0対応|
|:–|:–|:–|:–|:–|:–|:–|:–|:–|:–|:–|:–|
|Pixel| | |5|1080 x 1920|9:16|Android 7.1 (Nougat)|Android 10|2016/10/20| |
|Pixel XL| | |5.5|1440 x 2560|9:16|Android 7.1 (Nougat)|Android 10|2016/10/20| |
|Pixel 2| | |5|1080 x 1920|9:16|Android 8|Android 11|2017/10/19|●|
|Pix

元記事を表示

Navigation 2.3.1でonNavDestinationSelectedを使ってActivityに遷移できない

AndroidX の [Navigation 2.3.1](https://developer.android.com/jetpack/androidx/releases/navigation#2.3.1) で `MenuItem#onNavDestinationSelected` を使用して Activity へ遷移させると遷移が正しくできない問題に遭遇しました。
Fragment への遷移ではこの現象は発生しません。

## Workaround

Issue Tracker に報告したところ、バグ扱いになったのでライブラリ側で対応してくれるのを待ってもいいかもしれません。
https://issuetracker.google.com/issues/171364502

Activity への遷移の時は `navigate` を使用するようにすれば回避することができます。

“`
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val navController = findNavContro

元記事を表示

How to create Bitmap form inflating FrameLayout (.. or other layout)

I got into a bit of trouble when I tried to create a dynamic layout and generate a Bitmap without displaying it on the screen, so I’ll leave this as a note.

“`kotlin

fun createLayoutBitmap() {
val frameLayout = createMeasuredFrameLayout()
val bitmap = createBitmap(frameLayout)
// save bitmap or set Views …
}

fun createMeasuredFrameLayout(): FrameLayout {
// inflate or new your layout
return FrameLayout(context).apply {
setBack

元記事を表示

Associate Android Developer認定試験 スタディガイド翻訳

# Associate Android Developer – Study Guide の翻訳
AAD認定試験スタディガイド翻訳のQiitaをちまっと投稿していたのですが、各々は短いので1記事にまとめました。

スタディガイド:
 0. [Overview](https://developers.google.com/certification/associate-android-developer/study-guide)
 1. [Android core](https://developers.google.com/certification/associate-android-developer/study-guide/android-core)
 2. [User interface](https://developers.google.com/certification/associate-android-developer/study-guide/user-interface)
 3. [Data management](https://developers.google

元記事を表示

Androidカメラのプレビュー表示(Camera2 API + TextureView)

# Camera2 APIによるカメラのプレビュー表示について
[Androidカメラのプレビュー表示(Camera2 API + SurfaceView)](https://qiita.com/Rei_2020/items/63fe4216835141d03c4a)に述べたように、Camera APIをCamera2 APIに変えると、カメラプレビューの実装が難しくなります。特にCamera2 APIには、Camera.Parameters.setPreviewDisplay()のようなプレビューサイズを設定するAPIがなく、Camera.setDisplayOrientationのようなカメラを回転させるAPIもないので、プレビューを正しく表示するのが難しいところです。

SurfaceViewを使う場合、画面の回転はやってくれるので、アスペクト比の調整のみを実装すればよいですが、TextureViewを使う場合、画面の回転はやってくれないので、そちらの実装もやらなければなりません。

本稿では[Androidカメラのプレビュー表示(Camera2 API + SurfaceVie

元記事を表示

Android color配色

Android
color配色

http://feb19.jp/apps/materialcolor/

元記事を表示

OTHERカテゴリの最新記事