- 1. AndroidのversionNameを自動管理する
- 2. 子ビューのタップ可能エリアを拡張するTouchDelegateをBindingAdapterで簡単に使う
- 3. 非rootなAndroidでSesame miniの鍵を取得した時のメモ
- 4. Javaで書いていたAndroidプロジェクトをKotlinに変換してみる
- 5. Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた
- 6. テキストやボタンの端を丸くする Android
- 7. 【Unity + AdMob + CocoaPods + iOS】エラーなくビルドを通すための最適解【Androidにも応用できる】
- 8. 関数型プログラミング-Applicativeって何が嬉しいの?-
- 9. [Android][Kotlin]背景をタップしてキーボードを非表示にする
- 10. スマートアプリの脆弱性診断
- 11. Firebase ML 備忘録(クイックスタート)
- 12. monkeyrunnerでAndroidの自動化テスト作成
- 13. React Native BLEペリフェラルをスキャンする
- 14. AndroidからUSB HIDでマイコンを制御してみる
- 15. 【ReactNative】Androidでbase64画像の保存とPOST送信
- 16. MergeAdapterを試してみた
- 17. [Joke] God Activity Architectureの奨め
- 18. SharedPreferencesはprocess間共有できない
- 19. [Kotlin]Roomを用いたデータベース操作
- 20. Delphi 10 AndroidでSoapクライアント
AndroidのversionNameを自動管理する
## 問題
apkを配布するために、app/build.gradle の`versionName`のみをインクリメントしてプルリクエストを出す。
これはなかなか面倒だし、手間だなと思った。versionName なんて修正するまでもなく、自動で加算されてほしい。
## どうしたか?
そこで`versionName`に日時にしてはどうだろう?
イメージはこんな感じ
“`gradle:app/build.gradle
static def getCustomVersionCode() {
return new Date().format(‘yyMMddHHmm’).toInteger()
}android {
compileSdkVersion 29
defaultConfig {
applicationId “com.xxxx”
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName “1.0-
子ビューのタップ可能エリアを拡張するTouchDelegateをBindingAdapterで簡単に使う
最近Androidのレイアウトの勉強の取り組みとしてTwitterを模倣して実装する学習をやっています。その際、アイコンのImageViewをタップした時に、思うようにタップできないことがあります。
Gif画像では、カードの右側の逆三角形アイコンをタップしようとしていますが、ちょっとずれただけでカードへのタップイベントだと認識されてフィーリングが良くないの図です。
実際に配置しているImageViewがこれなのですが、小さい三角形のアイコンなので、幅22dpを指定しています。“`xml
非rootなAndroidでSesame miniの鍵を取得した時のメモ
root化済みのAndroidがなかったので、非rootの環境でSesameの鍵をぶっこ抜いてみました。
(既出ならすみません)
セサミアプリのバージョンは1.3.9にて確認## 前提条件
・Android Studio(adb/jre/jarsigner/keytoolを利用)がインストールしてあること
・USBデバッグが有効にしてあること
・SESAMEの設定が済んでいること
・SESAMEにGoogleで登録した場合はパスワードを設定してあること(メールアドレスでログインします)## 準備
・以下よりapktool 2.3.4 (2.4系不可) をダウンロード
https://bitbucket.org/iBotPeaches/apktool/downloads/
・AirDroid等でセサミアプリをぶっこ抜く## アプリの書き換え
以下のコマンドにてセサミアプリのdecompileを行います。
カレントディレクトリにapkファイル名のディレクトリが作成されsmal
Javaで書いていたAndroidプロジェクトをKotlinに変換してみる
# 背景
昔、JavaでAndroidプロジェクトを書いていたものがある。その当時からAndroidバージョンが上がった事に伴い、古いプロジェクトを再度読み込み何とか新しいバージョンに対応する事が出来た。
そんな中、最近ではKotlinがAndroid開発の標準言語として普及しているという事を知る。
次に何か作る時にはKotlinかな、と思っていた所に、簡単にjavaからKotlinに変換出来るという話を聞く。という事で、今後の為にも今のうちにKotlinに変換してみる。
ついでに今までしていなかったGithubでの管理も始めてみる。# 環境
Android studio 3.5.3 (後で3.6.3に上げた)# 前準備
## Githubにjava状態でのプロジェクトを保持
何かあった時の為に元に戻せるようにはしておきたい。これを機にGithubも始める。
[\[Android Studio\] GitHub と連携してみる](https://dev.classmethod.jp/articles/android-studio-git-integration/)を参考にする
Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた
#免責事項
**この記事に記載されている内容を、実際に試して発生した損害に対していかなる責任も負いません(補償しません)。**
**すべて自己責任のもとで行ってください。**リリースされているアプリやゲーム、[ソフトウェア利用許諾契約(EULA)](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%88%A9%E7%94%A8%E8%A8%B1%E8%AB%BE%E5%A5%91%E7%B4%84#%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。勘違いして理解しており、誤ったことを記載しているとこ
テキストやボタンの端を丸くする Android
#はじめに
テキストやボタンの端を丸くする方法を簡単にまとめました。#1.Layout resource file の作成
layout_width 200dp
layout_height 50dpのTextViewの端を丸くさせます。
drawableフォルダに`Drawable resource file`を作成する
【Unity + AdMob + CocoaPods + iOS】エラーなくビルドを通すための最適解【Androidにも応用できる】こんにちは!
ねこじょーかー([@nekojoker1234](https://twitter.com/nekojoker1234))と申します。みなさんは、UnityEditor 上だけでなく、実機で動作確認したことはありますか?
**実機で動作確認をするには「ビルド」が必要になるのですが、これがまた本当にやっかいです。**
何がやっかいなのかと言うと、とにかくエラーが出ることが多く、そしてそのエラー解決も一筋縄ではいきません。私が遭遇したやっかいなエラーたちは以下の通り。
– GoogleMobileAds/GoogleMobileAds.h’ file not found
– Undefined symbols for architecture arm64
– Undefined symbols for architecture armv7
– linker command failed with exit code 1エラー内容で調べるといろいろと情報は出てくるのですが、Unity のバージョンが新しいせいか、どれも解決にはいたりませんでした。
> – [Un
関数型プログラミング-Applicativeって何が嬉しいの?-
今回は、関数型プログラミングにおけるApplicative Functorの有用性について軽く触れたいと思います。プログラミング言語は前回同様、Haskellを用います。
## Functorでできない計算
[前回の記事](https://qiita.com/masaki_shoji/items/af5ab8b9496f0a6dfbbc)で見た通り、ファンクター値の中身の関数を、別のファンクター値に写そうとしたとき、fmapの定義ではその計算が実現できないのでした。※ここは前回の記事と一部内容が重複しているため、読み飛ばしても構いません。例えば、以下のようなコードはfmapの型定義と矛盾が発生するため、コンパイルエラーとなります。
“`haskell
fmap (Just (5*)) (Just 3) –このコードはコンパイルエラーとなる
“`なぜ、上記のコードがエラーになるかを改めて振り返っておきます。
まず、Functorクラスのfmapの定義を改めて見てみましょう。“`haskell
class Functor f where
fmap :: (a
[Android][Kotlin]背景をタップしてキーボードを非表示にする
## 画面側
“`xml
スマートアプリの脆弱性診断 #アプリの脆弱性診断サービスとは
「アプリケーション脆弱性診断サービス」は、お客様が開発したスマートフォンアプリケーションのセキュリティ対策が適切であるかを診断し、問題点の有無をご報告するサービスです。
インターネットを介した不正アクセス被害が日々報じられる昨今、 その手法を理解し攻撃からシステムを守る技術の重要性はかつてなく高まっています。
#脆弱性診断サービスの分類
自動ツールだけに頼らない手動診断と、リバースエンジニアリングによる高度な解析技術によりの手動診断があります。
1.Webアプリ脆弱性診断
2.スマホアプリ脆弱性診断IOS/Android
3.ペネトレーションテスト(侵入テスト)#スマホアプリ脆弱性診断の項目
OWASP Mobile Top 10を基準とします
#報告書
Firebase ML 備忘録(クイックスタート)
# はじめに
Firebase ML を試す機会があったので、
その時にやったこと・わかったことを備忘録に残します。# 参考にしたサイト
[公式](https://firebase.google.com/docs/ml-kit?hl=ja)一番手軽に始めるなら、
[クイックスタートサンプル](https://github.com/firebase/quickstart-android/tree/master/mlkit)をDL( clone は一つ上の階層から他のPJも含めてになります)して、
Firebaseにパッケージを登録するのが一番早かったです。
(逆に、Firebase使ってる既存のPJのパッケージ名にアプリを寄せちゃうかですね…)自分でコードを書いて、作ってみる場合は[コードラボ](https://codelabs.developers.google.com/codelabs/mlkit-android/#0)が一番いいです。
CameraXも使いながら、テキスト解析・顔認識・バーコード解析をやってみましたが、
ある程度APIのインタフェースは揃っていたので
monkeyrunnerでAndroidの自動化テスト作成
# Androidの操作を自動化してテストを自動化する
## 開発環境
Mac 10.14.6## やったこと
* Mac でmonkeyrunnerを動かすためにopenjdk8のインストール
* monkeyrunner で操作を記録
* 記録した操作で実行## 参考にしたサイト
https://qiita.com/ikota/items/ef6bdb4dad6ab9ba912a
https://developer.android.com/studio/test/monkeyrunner/MonkeyDevice?hl=ja##手順
### monkeyrunnerの実行環境の構築
すでにAndroid StudioがDownloadされている環境ではmonkeyrunnerが以下にある。
/Users/xxx/Library/Android/sdk/tools/bin/monkeyrunnerターミナルからmonkeyrunnerを実行すると、以下のエラーが出て実行できない。
~~~
./monkeyrunner
-Djava.ext.dirs=/User
React Native BLEペリフェラルをスキャンする
# はじめに
React Nativeアプリケーションで、BLEペリフェラルデバイスのスキャンを行います。Androidでのみ動作確認していますが、Androidのみで動作可能なAPIは利用していないので、iOSでも動作可能かと思います。OSSはBLE Managerを利用します。https://github.com/innoveit/react-native-ble-manager
# 初期セットアップ
まず通常通りアプリケーションの雛形を作り、それからyarn addでBLE Managerをインストールします。“`bash
$ react-native init BLESample
$ cd BLESample
$ yarn add react-native-ble-manager
“`Androidのマニフェスト(android/app/src/main/AndroidManifest.xml)に以下の3つのパーミッションを設定する。
“`xml
AndroidからUSB HIDでマイコンを制御してみる AndroidからUSB HIDでマイコンを制御するまとまった例が見当たらなかったので、試作してみました。
# 概要
Android端末のUSB端子にマイコンをつなぎ、マイコン上に搭載されたLEDの点灯をAndroidアプリから制御します。
マイコンには[ARM mbed](https://os.mbed.com/)を用い、Androidとマイコン間はUSB HIDで通信します。![概要](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67657/37edfc67-ef5a-180a-a52b-91cb09c59037.png)
# ソースコード
https://github.com/yhirano/android_usb_hid_sample/
# mbedとは
mbedはARM社のプロトタイピング用マイコンボードとそれの開発環境です。
mbedに似たプロトタイピング環境としてはArduinoがありますが、Arduinoに比較すると、ブラウザ上で動くオンライン開発環境で開発ができるためにコンパイ
【ReactNative】Androidでbase64画像の保存とPOST送信
AndroidのReactNativeアプリでbase64画像の保存とPOST送信をします。
# 画像の保存
## iOSでの保存、もしくはAndroidでhttp or httpsリソースの画像の保存(base64だとエラー)の場合
まずはbase64でない場合。
以下で画像のダウンロードができます。
一度FileSystemに画像をダウンロードして、そのURIを使っています。“`jsx:DowloadImage.jsx
import * as FileSystem from ‘expo-file-system’;
import * as MediaLibrary from ‘expo-media-library’;
import * as Permissions from ‘expo-permissions’;const downloadImage=( file )=>{
FileSystem.downloadAsync(
file.uri,
FileSystem.documentDirectory + ‘image.jpeg’
MergeAdapterを試してみた
これまでRecyclerViewで異なるレイアウトのコンポーネントを組み合わせる場合、共通のAdapter内でViewHolderを複数作成し、`viewType`で処理を分けるのが一般的だったと思います。
その結果、Adapterが肥大化して可読性が悪くなってしまう経験をした方は多いのではないでしょうか。
そんなあなたへの朗報、**MergeAdapter**を使うことでAdapterを分離し、**スッキリ**と書くことができるようになりました。
この記事では、このMergeAdapterについて簡単な実装からちょっとした疑問点へのお答えまでできればと思います。
– 実装方法
– 1つのAdapterのみ更新したらどうなるのか
– viewTypeは指定しなくて良いのか# MergeAdapterとは
ドキュメントは[こちら](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/MergeAdapter)。
>An Adapter implementation that
[Joke] God Activity Architectureの奨め
God Activity Architecture(GAA)は、Activity内に全てのコードを配置するアーキテクチャです。MVPと比べてみましょう。
# MVP
![mvp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277107/4b217037-7aa8-34b0-6f7d-6e80b34e4612.png)# GAA
![gaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277107/ee15af0a-8ba1-7b90-9ae6-3de77c4ab187.png)# 長所
ファイルを探したり、あちこちのファイルを行き来しなくてよくなります。パッケージやプロジェクト構成、命名などで悩む必要もありません。
学習コストも最低です。Hello Worldができたらもう習得済みです。たぶんAndroid開発者なら誰でも一番最初に採用するアーキテクチャでしょう。
# 短所と対策
GAAを使うとUn
SharedPreferencesはprocess間共有できない
#発生事象
SharedPreferencesで古い値を取得してしまうことがあった。(毎回ではないところがバグに気付きにくかった・・・)#原因
今回、AlarmManagerを使用してBroadcastReceiver内でSharedPreferencesの値を使用しており、AlarmManagerのサンプルでは以下のようになっていることが多く、それを深く考えずそのまま使用してしまっていたので別プロセスでのアクセスになってしまっていた。SharedPreferencesはドキュメントにもあるように、マルチプロセスでの動作を保証していない。
`Note: This class does not support use across multiple processes.`
[SharedPreferences](https://developer.android.com/reference/android/content/SharedPreferences.html)“`xml
[Kotlin]Roomを用いたデータベース操作
# はじめに
– [公式はこちら](https://developer.android.com/training/data-storage/room?hl=ja)
– Roomを用いて追加及び取得を行います# 画面
データ追加ボタンでデータを追加
データー表示でデータを表示します“`actvity_main.xml
Delphi 10 AndroidでSoapクライアント #はじめに
Delphi 10.3.3 Community Edition を入手したのでモバイルアプリを作ってみたいと思います。
まずはSoapクライアントができるのか試してみました。(Restはまだお勉強中)
SoapができればDB接続などのめんどくさい動作は全部サーバー側に持たせることができるので
作りなれないモバイルアプリでも色々出来るのではと期待しています。
AndroidでもIOSでも同じことができると思いますが、現状は手元にMacが無いので
手持ちのAndroid機で試してみることにしました。(それも超古いやつですが…)
作り方は基本Windowsアプリと同じです。FireMonkeyの本領発揮ですね。#評価環境
開発マシン: Windows10 professional (Core i5-3337U 1.8GHzで重いですT_T)
Delphi : Delphi 10.3.3 Community Edition
Androidマシン:Nexus7 (32bit)
Androidバージョン:6.0.1#Android側の準備
開発マシンとNexus7をUSB