- 1. 【Android】APKをデコンパイルしてみる
- 2. Android で Youtube の動画を再生する[Kotlin]
- 3. Goでローカルサーバーを立てた~ファイルダウンロード~
- 4. MediaCodecのencode
- 5. #14 Kotlin Koans Conventions/In range 解説
- 6. #15 Kotlin Koans Conventions/Range to 解説
- 7. Android Expand Horizontallyはみだしちゃう
- 8. #13 Kotlin Koans Conventions/Comparison 解説
- 9. HMSアプリ開発コンテストでHMSを理解しよう
- 10. kotlinx.serializationでCustomSerializerを作り、ライブラリクラス・sealed classのdeserializeを行う
- 11. モバイル向けFlutterアプリをWeb対応するときに注意したいこと
- 12. Flutter製アプリをAndroid向けにリリースしようと準備し始めたらエラーが止まらなかった
- 13. 【Kotlin】FirebaseのRemote Configを使ってみる
- 14. Android11 SDK30でpackage名を取得できなくなった問題
- 15. Android(Pixel、Xperia、Galaxy、AQUOS)画面サイズ、ピクセル数早見表
- 16. Navigation 2.3.1でonNavDestinationSelectedを使ってActivityに遷移できない
- 17. How to create Bitmap form inflating FrameLayout (.. or other layout)
- 18. Associate Android Developer認定試験 スタディガイド翻訳
- 19. Androidカメラのプレビュー表示(Camera2 API + TextureView)
- 20. Android color配色
【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 controllersimport (
“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®ionId=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/171364502Activity への遷移の時は `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/