- 1. 【Kotlin研修2日目】トーストとListViewへのリスナ定義
- 2. fvm インストール
- 3. 文献管理のすすめ
- 4. FragmentでJetpack Composeをつかう
- 5. 【Kotlin研修1日目】イベント処理とKotlinによるアクティビティの記述
- 6. 【Kotlin研修1日目】レイアウト部品とビュー
- 7. 【Kotlin研修1日目】Android OSとアプリの構成要素
- 8. UE4にWiFi経由でAndroidアプリをDeployする方法
- 9. 入力制限付きEditTextへのペーストとうまく付き合う
- 10. ファーウェイのHarmony OSの技術概要
- 11. iOSアプリ開発とAndroidアプリ開発で違っていて戸惑った点
- 12. Jetpack Compose で使える便利な Live Templates
- 13. android adb
- 14. 【Kotlin】Fragmentでの画面遷移時に値の受け渡しを実装をする
- 15. [Android]name = “hogehoge” is translated here but not found in default localeが起きた時
- 16. root起動したNoxPlayer上のアプリにlldbを使ってattachする
- 17. 【Kotlin】MVVM + RxJava + RetrofitでQiitaの記事を取得するアプリを作成してみた
- 18. Androidアプリのパフォーマンス ②改善(Map、Set)
- 19. [Android]初めての公式ドキュメント
- 20. AndroidによるmTLS接続方法について自分用メモ
【Kotlin研修2日目】トーストとListViewへのリスナ定義
# トースト
[参考: トースト](https://developer.android.com/guide/topics/ui/notifiers/toasts?hl=ja)## Toastオブジェクトのインスタンス化
### 定義
“`kotlin
Toast.makeText(context: Context, text: CharSequence, duration: Int)
// パラメータ
// context: トーストを表示させるアクティビティオブジェクト(=Activityインスタンス)
// text: トーストで表示する文字列
// duration: トーストを表示する時間
“`### サンプルコード
“`kotlin:MainActivity.kt
val show = “test”val toast = Toast.makeText(this@MainActivity, show, Toast.LENGTH_LONG)
“`#### 説明
##### `Context`クラス
`Activity`クラスの親クラス。####
fvm インストール
公式Document
https://fvm.app/docs/getting_started/installation
に従って“`
brew tap leoafarias/fvm
brew install fvm
“`
を実行したがエラー“`
Error: Can’t create update lock in /usr/local/var/homebrew/locks!
Fix permissions by running:
sudo chown -R $(whoami) /usr/local/var/homebrew
==> Tapping leoafarias/fvm
fatal: could not create leading directories of ‘/usr/local/Homebrew/Library/Taps/leoafarias/homebrew-fvm’: Permission denied
Error: Failure while executing; `git clone https://github.com/leoafarias
文献管理のすすめ
# 最近困ったことがあります
最近困ったことが起こりました.なんとMendeleyのiosアプリとandroidアプリの提供が廃止されました.それまで行っていた
* Mendeleyで文献管理
* Goodnoteで文献に書き込み
* Google driveで書き込んだ文献を保存を行っていたのですが,その素敵環境がなくなりました.
その他の環境を求めていた僕にとっては環境を変える転機が来ました.
# Paperpileを使って見よう
Paperpileはchromeの拡張機能として使える文献管理ツールです.
一ヶ月で$3かかるのが少し気になりますが,Endnoteなどは採用していない大学も多く,導入するのに今後のキャリアを考えると少し不安なので,Paperpileを使用することにしました.さらに追加情報として,最近,Paperpileのiosアプリができました.
これを使えば前の環境を大幅に崩さずに行けるはずまだ書き途中なので,更新します・・・・(2021/06/03)
FragmentでJetpack Composeをつかう
# FragmentでJetpack Composeをつかう
## 前書き
FragmentでJetpack Composeを使う時の書き方を忘れてしまうので、メモとして残します。### 純正Compose
“` kotlin
class ComposeUIFragment : Fragment() {override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
Text(text = “Hello world.”)
}
}
}
}
“`### compose + xmlのハイブリッド
“` kotlin
class Co
【Kotlin研修1日目】イベント処理とKotlinによるアクティビティの記述
# イベント/イベントハンドラ/リスナ
## イベント
ユーザが画面に対して行う`操作`。## イベントハンドラ
`イベント`に対応して行う`処理`。## リスナ
`イベント`の`検出`を行うもの。# サンプルコード
“`kotlin:MainActivity.kt
package com.example.helloimport …
// アクティビティクラスは、Activityクラス(の子クラス)を継承して作成
// AppCompatActivity: Activity
class MainActivity: AppCompatActivity() {// onCreate()メソッド: 起動時に実行されるメソッド
// onCreate()メソッドはActivityクラスで定義されているため、overrideして使用
override fun onCreate(savedInstanceState: Bundle?) {// 親クラス(AppCompatActivity)のonCreate()も処理しなけれ
【Kotlin研修1日目】レイアウト部品とビュー
# レイアウト部品とビュー
## レイアウト部品(ビューグループ)
`Android SDK`で用意された画面部品の`配置`を定義。### 主なレイアウト部品
[参考1: レイアウト部品](https://qiita.com/yukiyamadajp/items/91b7ea994bd0dc4b5b76)
[参考2: RelativeLayoutとConstraintLayout](https://qiita.com/yamadacsa/items/a4fcf4de9982111cdb7c)|タグ|内容|
|:–|:–|
|``|`x`/`y`方向|
|``|表形式|
|``|`z`方向|
|``|`循環制約`を許さない相対的配置|
|``|`循環制約`を許す相対的配置| ## ビュー(ウィジェット)
`Android SDK`で用意された`画面部品`。### 主なビュー
|タグ|内容|
|:–|:–|
|`
【Kotlin研修1日目】Android OSとアプリの構成要素
# Android OSの構造
![android-stack_2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673880/e5ffde9c-8675-3472-46bb-b570fb6e180d.png)
[出典](https://developer.android.com/guide/platform)## System Apps
`Android OS`に備わっているアプリ。## Java API Framework
Android開発に必要な`Javaライブラリ`。## Native C/C++ Libraries
`C言語`や`C++言語`でプログラムを作成するためのライブラリ。## Android Runtime(ART)
`Java`プログラムを実行するための実行環境。## Hardware Abstraction Layer(HAL)
`Android`端末のハードウェアを扱うライブラリ。## Linux Karnel
`Android Karnel`の核
UE4にWiFi経由でAndroidアプリをDeployする方法
# UE4 Androidデプロイがめんどい
UE4便利なんですが、ARアプリなどを作成するとPC上では試せず、結構USB接続してDeployがめんどいわけです。
「めんどいなー」
「全人類同じこと思ってるだろうなー」
「賢い人、どうにかしてよー」しかも、USB接続のたびに充電されて100%フル充電で、モリモリバッテリーを削っていく。
「こりゃいかんでしょ」
# 実は賢い人が既に解決していた
知らなかっただけで、Android11からはWiFiでアプリがDeployできるようになってました。
「まじで!?」
# ペア設定コードによるデバイスのペア設定
https://developer.android.com/studio/command-line/adb?hl=ja
によると、
1) ワイヤレス デバッグ 有効化
2) ペア設定コードによるデバイスのペア設定
3) デバイスへ接続らしい。しかし、どうやらかこにUSBでデバッグを有効にしていると、自動的にWiFiもデバッグが有効になるようで、1)と3)だけでいいです。面倒な 2)はパスできます。
## 1
入力制限付きEditTextへのペーストとうまく付き合う
## editTextとコピペの関係
まず前提として、数値6桁制限のあるEditTextがあります。
※以降もこの前提で話を進めます。“` hoge.xml
android:maxLength=”6″
android:inputType=”number”
“`この時ユーザ入力が1文字ずつなら問題ないのですが、コピペによる入力をおこなうと想定外の挙動になることがあります。
### 桁数オーバーの数値をペーストするパターン
「1234567」をペースト。
画像の通りですが、あぶれた桁は切り捨てられます。
### 入力されている状態で、桁数オーバーになるパターン
画像左の状態でさらに「1234]をペースト。
ファーウェイのHarmony OSの技術概要# Harmony OSとは
– ファーウェイが開発した次世代OS
– 複数デバイスを互いに接続しあうことで、リソースを共有し、スーパーデバイスを構築することが理念
– スマホ、タブレット、テレビ、腕時計、スピーカー、車、家電など、様々なデバイスに対応# Harmony OSとAndroidとの違い
||Harmony OS|Android|
|:—:|:—|:—|
|理念|複数種類のデバイスの同時使用|単独のデバイスの使用|
|OS対象|・スマホ
・タブレット
・テレビ
・腕時計
・スピーカー
・メガネ
・車
・カメラ
・電子レンジ
・エアコン
・その他の電子機器|・スマホ
・タブレット
・テレビ|
|OSのソースコード|[オープンソース](https://gitee.com/openharmony)|オープンソース|
|IDE|DevEco Studio|Android Studio|
|開発言語|・Java
・JavaScript|・Java
・Korlin|
|レイアウト開発言
iOSアプリ開発とAndroidアプリ開発で違っていて戸惑った点
## 初めに
普段iOSアプリを開発しているエンジニアです。
1ヶ月ほどAndroid開発を行う機会があったのでそこでつまづいたことをまとめておきます。
特にiOSと違っていて戸惑った点です。
## Androidアプリには戻るボタンがある。
iOSのアプリには自分で作らない限り戻るボタンはないのですが、Androidでは戻るボタンが存在します。
Webにある戻るボタンのような感じのもので特にフラグメントを使っているときは戻るボタンを押すと自分の思っていないページに飛んだりして少し、戸惑いました。
特に下記の記事と同じ問題につまづいてしまい、この記事にたどり着くまでかなり苦労しました。
https://qiita.com/tomo1139/items/62902093d1850085742d## レイアウト作成やレイアウトとコードの紐付けが楽
これはAndroidの方が楽という意味なのですが、個人的にはレイアウトを全てSwiftもしくはstoryboardで書くiOSよりもxmlファイルにレイアウトを分けているAndroidの方が若干楽でした。(SwiftUIとかと比べると、、、と
Jetpack Compose で使える便利な Live Templates
## `comp` – コンポーザブル関数を作成
![comp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/7ab1ab72-0383-b1a2-2531-0a774fd30946.gif)
## `paddp` – paddingモディファイアを追加
![paddp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/62d2a7de-7c9b-9b64-18b0-7f18cd830aae.gif)
## `WR` – 選択範囲をRowで囲む
![row.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/61e5e568-23fa-9659-f20d-ce9984d3da7d.gif)
## `WC` – 選択範囲をColumnで囲む
![column.gif](https://qiita-im
android adb
>![](https://upload-images.jianshu.io/upload_images/47789-155ef8aaa41db25f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
### ADB是什么
ADB,即 [Android Debug Bridge](https://developer.android.com/studio/command-line/adb.html) 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 `Unix shell`(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在`Android SDK/platform-tools`中找到 `adb` 工具或下载 [ADB Kits]( http://adbshell.com/downloads) 。
### 查看adb的版本信息
`adb version`
### 显示设备列表
“`
adb devicesList of devic
【Kotlin】Fragmentでの画面遷移時に値の受け渡しを実装をする
基本的なことですがFragmentからFragmentに遷移する際に値を引き継ぐ実装を紹介します。
今回、紹介する方法は`newInstance`を用いた方法です。これ以外にも複数手順あるのでよかったら調べてみてください。
参考:[【Android】Fragment間で値をやりとりする
](https://qiita.com/m-coder/items/3a8e66d49f2830b09bf4#setfragmentresult%E3%82%92%E4%BD%BF%E3%81%86)[フラグメント間でデータを渡す](https://developer.android.com/training/basics/fragments/pass-data-between?hl=ja)## 実装完成イメージ
初期画面で入力したテキストをボタンをタップすることで、次の画面のタイトルとテキストフィールドに設定する簡単なアプリです。![Videotogif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/
[Android]name = “hogehoge” is translated here but not found in default localeが起きた時
#解決策
黙って再度展開(File -> Close Project)
root起動したNoxPlayer上のアプリにlldbを使ってattachする
# tl;dr
– ホストPCのポートにNoxPlayer上のAndroidのadb_serverがforwardされており、adb connectで接続できる。
– lldb/gdbするにはadbでport forwardする。
– Root化起動を有効にすれば手軽に任意のプロセスにattachできる# モチベ
NoxPlayerはroot化起動が簡単に出来るのでReverseEngineeringの道具にできるのではないか。
rootでlldb-serverを起動したら任意のアプリ/プロセスをデバッグできるのでは→できた# 手順
## Noxのセットアップ
1. 普通にイメージを作る
今回はAndroid5(Lollipop)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132033/7eb7eb72-78b9-d127-b297-791d87ba0554.png)
1. システム設定→基本設定→Root化起動をONにしておく
1. 起動しておく##
【Kotlin】MVVM + RxJava + RetrofitでQiitaの記事を取得するアプリを作成してみた
自分自身の設計の勉強を兼ねてMVVMでQiitaの記事を取得するだけの簡単なアプリを作成しました。(https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF)
## MVVMとは
– Model
– View
– ViewModelの3つから構成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484337/37d59285-4011-c3f1-1552-77723fa80f72.png)View層 → ViewModel層 → Model層といったような依存関係があります。
Model層はViewModelやViewに関心がなく(Viewの種類に関わらず同じ処理を行う→Viewに依存しない)、ViewModel層はViewに関心がありません。参考:[【Android】2020年からの MVVM【実践】](https://qiita.com/sdkei/items/a48ae24536562ed000b3)
## 実装完成
Androidアプリのパフォーマンス ②改善(Map、Set)
この記事では、Androidアプリのパフォーマンス改善のための、方法について記載します。
### 改善対象
MapやSetを特定の条件で絞りたい場合、filter関数を使うことがあると思います。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter.htmlfilterはとても便利な関数ですが、パフォーマンスとしては注意が必要です。
### 計測
1から100までのキーを持つMapから、キーが91以上のマップをfilterする場合、JUnitで処理時間を計測したところ、10000回の平均値で、**26,731ns**でした。“`kotlin
companion object {
private const val MAP_SIZE = 100L
private const val NUMBER_OF_MEASUREMENT = 10000
}@Test
fun mapTest() {
val map =
[Android]初めての公式ドキュメント
#対象者
ドキュメントを読みたい人
ドキュメントを読もうとしても英語の羅列でなんの情報かが分からないという人
#構成について
みんな大好きAlertDialogのドキュメントを元に解説していきます。https://developer.android.com/reference/android/app/AlertDialog
#AlertDialog
###public class AlertDialog extends Dialog implements DialogInterface
これは、クラスの定義です。
Dialogクラスを継承し、DialogInterfaceを実装していることがわかりますね。###java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialogこれは、継承の家系図的なものがパッケージまで書かれています。
###Known direct subclasses
これは、AlertDialogのサブクラスについて紹介されています。
###A subclass of Dia
AndroidによるmTLS接続方法について自分用メモ
## mTLSとは
ざっくり言うと双方向で行うTLS認証である。詳しくは[こちら](https://milestone-of-se.nesuke.com/nw-basic/tls/mutual-tls-token-binding/)
## 必要なもの
– android側
– クライアントの秘密鍵
– クライアント証明書
– サーバ証明書のルート証明書– サーバ側
– サーバの秘密鍵
– サーバ証明書
– クライアント証明書のルート証明書## 接続方法
1. クライアントの秘密鍵・証明書の生成
生成方法はこちらの記事を参照
– https://tech.at-iroha.jp/?p=734
– https://android.benigumo.com/20201130/keytool/
– https://qiita.com/KNaito/items/66dc67e15b71f2bb1f981. サーバ側の秘密鍵・証明書の生成
AWSやGCPで行うのであれば、
– https://aws.amazon.com/jp/about-a