センニジュウヨン

意味なんてない

Fire HD 10 を買った

Amazonブラックフライデー&サイバーマンデーでセールになってたので、勢いで買った。

www.amazon.co.jp

2019年版(第9世代) の32GBストレージのもの、 通常価格 ¥15,980 のところ、セール価格で ¥10,980 で購入。 なんとなく Kindle Unlimited 3ヶ月分 付き(無料)にした。

後から調べると、一年前のサイバーマンデーでは ¥9,980 らしい。 少し損したような気分。

ちなみに、純正カバーは ¥4,780 もする。本体が1万円ちょっとなのにカバーに5千円弱払うのは馬鹿らしいので買わなかった。すごく重そうだし。 www.amazon.co.jp

感想など

先に感想を書いておくと、自分の使い方においては満足度はかなり高い(初タブレットが嬉しいというのも大きいかもしれないが)。 主な用途は漫画や動画の視聴で、ジップロックに入れて風呂に持っていくこともあるが、安いので雑に扱いやすいというのも良い。

ソフトウェアキーボードはカス。

WiFi(5GHz) には注意が必要

初期設定時に WiFi がつかめなかった。ぐぐってみると日本では、 5GHz 帯のうち、一部の周波数しか繋がらないようにされているらしい。 WiFi ルータの設定を変えて、WiFi が使えるようになった。

詳しくは、下の方の参考ページに。

Google Play

Google Play を入れる方法も調べたので、ここにメモしておく。(入れたとは言っていない。もしこれを見て入れようと思ってるなら、ググっていろいろ注意点を見たほうが良い。)

入れ方をぐぐってみると、APKMirror から4つの APK を落としてきて入れる事になっているようだ。 ただ、自分で調べた限り、4つのうち Google Account Manager 7.1.2 はおそらく不要。手元の実機 (Android 8 と 11)には Google Account Manager は入ってなかったし、APKMirror にある APK も、2017年に Android 6 以上向けの更新が最後のようなので、おそらく構成が変わって不要になったのだろう。

また、紹介されてる APK はちょっと古いので、新しい物を探してみた。 探すときは、Fire HD 10 (2019, 9th gen) の CPU *1 と OS *2 を考慮して、以下のように優先事項を決めた。

  • アーキテクチャとして、arm64-v8a があるものを優先。次点で armeabi-v7a。
  • 対応バージョンは Android 9 (APIレベル28) 以上を優先。
  • 対応 DPI は nodpi を優先。

これらを考慮した上で、新し目の以下の APK を選出した。

Name Architecture Minimum Version Screen DPI Date Uploaded Link
Google Services Framework noarch Android 9.0 nodpi November 29, 2019 at 11:55AM GMT+0900 Google Services Framework 9-6475783 (Android 9.0+) APK Download by Google LLC - APKMirror
Google Play services arm64-v8a + armeabi-v7a Android 9.0 nodpi November 27, 2020 at 12:58AM GMT+0900 Google Play services 20.42.65 (100400-342934990) (100400) APK Download by Google LLC - APKMirror
Google Play Store arm64-v8a + armeabi-v7a + x86 + x86_64 Android 5.0 nodpi December 4, 2020 at 8:44AM GMT+0900 Google Play Store 23.0.21-21 [0] [PR] 344908203 (nodpi) (Android 5.0+) APK Download by Google LLC - APKMirror
APK の検証

APKMirror をそのまま信用するのはどうかと思うので、APK を検証する方法を調べた。 APK には署名があるので、ツールを使えば偽造・改竄されていないか確認できる。

ググってみると、keytool や jarsigner という、Java 付属のツールを使っている記事が見つかるが、これは古いやり方。 APK の署名スキームには、現時点では v1 から v4 までのバージョンがあって、jarsigner などは JAR 由来の v1 でしか機能しない。しかし、v1 の署名を含まない APK もあるので、Java 付属のツールでは検証できない。

v2 以降の署名は apksigner で検証できる。(Android SDK Build Tools 24.0.3 以降で使用可能)

使用例

> apksigner verify --verbose --print-certs hoge.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1
Signer #1 certificate DN: CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Signer #1 certificate SHA-256 digest: f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83
Signer #1 certificate SHA-1 digest: 38918a453d07199354f8b19af05ec6562ced5788
Signer #1 certificate MD5 digest: cde9f6208d672b54b1dacc0b7029f5eb
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 2048
Signer #1 public key SHA-256 digest: 2b06490d2d24305c6a90dbf74cc42f50183d207d572f8079e5d92fb2c2a0cda1
Signer #1 public key SHA-1 digest: b2da9ef7ec0f4474117fb0cba4dca3b795c0eab7
Signer #1 public key MD5 digest: a90ce510a96aa09bee6bf8d9da9b258b

WARNING が出ることもあるが、あまり気にしないことにしておく。

ダメな例(ファイルを一つ置き換えて v1 署名で検証してみたもの。sdk-version は v1 だけが機能するレベルでテキトーに古いやつ)

> apksigner verify --verbose --print-certs --min-sdk-version 20 --max-sdk-version 20 dame.apk
DOES NOT VERIFY
ERROR: SHA-1 digest of resources.arsc does not match the digest specified in META-INF/MANIFEST.MF. Expected: <sjU4IQ9shYi+BmKWlxwMR1vKvfY=>, actual: <V5w7S0MUAzmPnl6wolZlKSPRaCE=>

このようにして、署名時から改竄されていないか確認可能。

あとは、偽造ではなく、正しく Google が署名がしたものかどうかが確認できればいい。それには、上のコマンド出力内の ”certificate SHA-256 digest” 等を確認すればいい。これらの値が本物の Android から吸い出した APK と同じになるなら、本物と思って良い。

端末の認証

Google非認証端末やカスタムROMをインストールした端末で、Google Apps がブロックされる可能性があるらしい。 Google Services Framework (GSF) IDをGoogleに登録すれば回避できるっぽい。

更に心配ならログインするアカウントも専用のものを用意したほうが良いかも。

詳しくは下の参考ページで。

参考ページ

*1:4xARM Cortex-A73 (2.0 GHZ), 4xARM Cortex-A53 (2.0 GHz)。ARMv8-A 64-bit 命令セットを実装しているらしい

*2:Fire OS 7、Android 9 (API Level 28) ベース