Android 7.1.1 対応した Genymotion 2.9.0
前回までのまとめ
動作時のメモリ設定
image | Gapp無し | Gapps導入後 |
---|---|---|
2.3.7 | 256M | 512M |
5.0 | 512M | 768M |
6.0 | 512M | 768M |
7.0 | 768M | 1024M |
7.1.1 | 768M | 1024M |
必要メモリが増えたのは、
- 2.3.7
- GAppsが Gogole Playでアップデート後、必要メモリが増えたっぽい
- ただその分安定動作するようになった *1
- その他
- imageの最適化?起動の高速化対応をしているらしい=>なんか必要メモリが増えた
な感じみたい。
2.3.7 に関してはgenymotion 2.9 からは 完全にdepricated扱いのようで、新規DLは不可。
Settings > clear cache で消さないようにバックアップは取っておいたほうがイイと思います
genymotion_vbox86p_2.3.7_160825_095124.ova
image導入後の基本設定
備忘のためにメモ
- 言語設定を日本語に*2
- timezoneを日本に*3
- Arm Transtration/Gapps導入
- image再起動
- Googleアカウント登録
- GooglePlayアプリ経由で必要なソフトを導入
公式エミュでできてgenymotionでできないこと
通信速度エミュレーション
iOS では Network Link Conditioner という機能が端末側で標準で用意されている
対策
Charies経由で行う
公式サイト
現在、また有料オプションの30日体験キャンペーンやっているみたい
ドキュメントは更新されていないようなので 2.8.0ベースのよう
でも CI向けの機能が多いから、個人ベースではあまり使わないんだよな・・(汗
ちなみに
genymotion も Charies もメジャーバージョンに伴って
規約が変更されているようで、再度同意文に同意させられたな・・
こう祈って同意しないとアプリ使えないからOK押しちゃうけど、ジックリ読んだほうがイイ気もする*4
7.x 系の体験メモ
今更ながら体験したのですが
Network Security Configuration により、
デフォルトのままだとユーザ証明書が無効の状態。
アプリからこのSSL証明書を使うと明示して使う形になったよう
したがって、アプリに手を加えないとchariesのSSL証明書は利用できない。
ただこの機能入ってる状態で、proxy設定すると
激遅状態なんだけど、G様のNW監視の作りが悪いんじゃ無いだろうか?
chariesでテストするには
従来通りの端末image側対応
初期状態 | proxyの設定 |
---|---|
![]() |
![]() |
WiredSSIDを長押しでproxy設定のポップアップメニューを表示
端末側 | Charies側 |
---|---|
![]() |
![]() |
設定直後 | 状態の改善 |
---|---|
![]() |
![]() |
- OS7からは
- 設定直後 or 動かしていると左側の状態によくなる。
- この状態だと通信はできるけど、なんか安定しない*5
これ実機でもおきるので、正直どうなんだろう??とか思ったりもしてしまう・・
- Charies を使わない時
- proxyを解除する
- OS6からは
- でもGenymotionは・・・
SSL証明書関係
charles ssl export charies.crt or ./Charles.app/Contents/MacOS/charles ssl export charies.crt
Usage: ssl export <file.pem | file.crt> ssl export <file.p12> <password> ssl export - [pem | crt] ssl export - p12 <password>
charies.crt => charies.ca にリネム*9
7.1.1ではcrtのままでないと認識しない。
最初試したのは7.0。instantRunが悪さしてるのかな?
プログラム対応
<network-security-config xmlns:tools="http://schemas.android.com/tools"> <!-- <domain-config> <domain tools:ignore="NetworkSecurityConfig">localhost</domain> <trust-anchors> <certificates src="@raw/valid_ca" /> </trust-anchors> </domain-config> --> <!-- charies用の接続許可設定 --> <debug-overrides> <trust-anchors> <certificates src="@raw/charies" /> </trust-anchors> </debug-overrides> </network-security-config>
localhostの証明書の例
res/raw/valid_ca.pem
-----BEGIN CERTIFICATE----- MIIC3jCCAcagAwIBAgIDDGqSMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMTFkFu ZHJvaWQgQ1RTIHRydXN0ZWQgQ0EwKhgTMjAxNTAxMDEwMDAwMDArMDAwMBgTMjAy NTAxMDEwMDAwMDArMDAwMDAhMR8wHQYDVQQDExZBbmRyb2lkIENUUyB0cnVzdGVk IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyu1Eg5wKieyro7qL XIx+qaqbE8mPqRL81i0mtQBjnq3gsXV3f7okUssg/8QRzYiYGP/shly70MOqKURP /gl7OtUj8SXLwQFzZ6B9hnWTXGRnBY4JFcgSy6LJMwo+ZPgwVtbjf1DAWNOLRhqY J9Uxr0PX5KZ5AafFVh0Y+JVmaFfGPxJ/UBi83GQ7ToKBvHTFN5SQjg5QtlW5DaEN cbO7lzB/OuKnIlLP6WlEVwCS+cToZAzaTafOVZaUarWHit0kq+8xyxl+koxgLcCK lkDYpZCezY3UAxGheRnmSuah6LK9BRx2cSMOKkeN3sAoVB6ARi7F30MYj7RH2XRz LumXLQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IB AQBJi4SF/k1KVUZrweqUZ/QJ5HBDxWo4kE4iNw415qw2fAfNsKJknH1bcqgHa7Ea nokT8a1KOQlicInptNRbkwBd3Xakt9k9aCWRqyqBzZZersakZ1cB3SNxameelGzl a3dvGqVreE3LWhiQR7A3g84hS1kH5oNiY6GVZRk8BsmUUsvKaS6FJSMb9bAGSijQ EZwsBk+HoSuLSVxUDtLZgbs1NYVK8jCG6GPv8cWis03pK3VKqjTi3DDs7mHioViG G/TUZPq5ok8BemctNPLZAMLVlWPVB389iTOmgJWdR2Lu7LKh4B952+SeHMo3huUR Hn/e+Sq5FmJfDVvFG6U3PEDd -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDK7USDnAqJ7Kuj uotcjH6pqpsTyY+pEvzWLSa1AGOereCxdXd/uiRSyyD/xBHNiJgY/+yGXLvQw6op RE/+CXs61SPxJcvBAXNnoH2GdZNcZGcFjgkVyBLLoskzCj5k+DBW1uN/UMBY04tG Gpgn1TGvQ9fkpnkBp8VWHRj4lWZoV8Y/En9QGLzcZDtOgoG8dMU3lJCODlC2VbkN oQ1xs7uXMH864qciUs/paURXAJL5xOhkDNpNp85VlpRqtYeK3SSr7zHLGX6SjGAt wIqWQNilkJ7NjdQDEaF5GeZK5qHosr0FHHZxIw4qR43ewChUHoBGLsXfQxiPtEfZ dHMu6ZctAgMBAAECggEAezX1E7P68iOxU4hAdcEYZwwffLQ1dgMBYUmo5t2FnyMT +qvIEtWCmIKdVq5F4PW+4+8APdSwdOFYwBWqPCSlneMsH49DV7z5xUG89ZcOElsj 8kt7WK5SOzJr14GwwL2xHAj9uJ/fKg/H0Jj1KbpYoIIg48PwVQD44IBqWQTdWRxd QVbxczDIHAjXSD14P4uUAXQrFyYEQXgksu4FNNGFr6JnuNe6eSreKxrw8/7J9OXZ 7VUfN0Iuw/M4HF1dKQKVK2R0W34wuS2KyI3fKUS7RoSrfXfBuZ1hQ1gWoATiXkbR AAMUSWuaj5RQ4lj0wxdRAO+e4QB2yUXHgzCr8pH6QQKBgQDuiXtcdZ2FVN9ezxJt XDd6225Rvh8XtWEUwTaJmOtZz2AKlKTQr06u/BqqpKWc5SWQSf88K7WPxF6EMizB 4D3wVGzCFkeRMMriZmrRe+8IVCq+mAZnRahV4SSH35ZQoNd8/3Mv6o59/UR0x7Nl 5yTqruROK0Ycz8S0GlvfKiDyywKBgQDZyGaIYqZ63piagmRx3EB1Z+8yfXnn8g2d iVYU3UTDWxAFtzq6cfPRUdDxGHgAjmVmLvSGEaxqYNOftxwC3zk1E03w4/KvXg+y Vt+1qPZ7Hj1OcGMYA+1/Qy6+GMneYnUkmO9zHoNzSDG5hfNkQ+3SyMx53FfTO8oA Lrpl4gFG5wKBgQCtCGXIKDlf4rU13RgM5HwKTuqzuSps1FHb8FxTa+4tc9TDWBhG mSSGorHlXxITwdWB2WughkRqSZQWaR82dCf6EgPitq6rj61cldaepzw52nQ3Vagv ecQmp+8L8RDk5Afs0JEKDSfYFMR3wfVM0mNhKgTK/3EYrU6PJx/FvpWwCQKBgDrk ICXdV1t+ehG+FN9dSej1tA8ZMy/vmpLxIl/9/aw+IbUJ+U2VpvMBhtjLXxf3aaAa LnFash8KE+/qmh6EsnmRwM/VNDkL3H7DUzdSe2SLptRhO8qwtTZmumsZVO1X/olo +cdNhwpTiW67tDd2zwbi2bhSR0WNs3AdMrZ+SQ4dAoGBANkjgWwzVN8KGOe9GdEo opcwVzC1l9xkUcB6ykIG+DKw5p1ChGLA+2uufdpNWfPqXixCt5X3qIOy1q/VIdlj EHNurGEld93H86V0ieLMRPg5llXWfKND2W8vezZSCGqFcSo+bAVi0YzA6XbLu+TV GyyCD8Jk/efmdN0DKjERIKDH -----END PRIVATE KEY-----
一応下記コマンドで証明書を入れて
adb shell am start http://www.charlesproxy.com/getssl/
その後、下記のようにかいて SSL証明書のuserタブを有効にする書き方も有るが、ロック画面等の設定等も必要になるのであまりスマートな書き方ではないらしい。
<network-security-config xmlns:tools="http://schemas.android.com/tools"> <debug-overrides> <trust-anchors> <!-- Trust user added CAs while debuggable only --> <certificates src="user" /> </trust-anchors> </debug-overrides> </network-security-config>
- debug/AndroidManifest.xml を修正
<application android:networkSecurityConfig="@xml/network_security_config" android:name=".application.DebugHogeApplication" tools:replace="android:name">
端末内でサーバーを立てている場合のテスト
のようなことをしたい場合、
localhost は Chariesを動かしているPC本体 が基本立ち位置 になるため
http://localhost:44917/api/v1/hoge/
の場合、
adb forward tcp:44917 tcp:44917
のような対処が必要になる
4/21追記 GooglePlay開発者サービスの通信 on OS7
通信の確認をしようとていて、同梱された状態で Charlesで通信の確認
- アプリから発行されている
- Febric
- 独自API
考えてみたら
アプリ<=>Google Play開発者サービス <=> Googleへ通信 //Google Map等一部のAPIは端末からなので問題ない
なわけで、
- 「Google Play開発者サービス 」は
ということで、結局はスマートでないという方法を取らざるを得ない!!
で正常成功するようにはなります・・。でもレスポンスは
- gzip + 暗号済み
データなので結局見れないんだよなー *10
7.x に関する追記(2017/05/08)
- OS7上のemuratorで chariesで通信を確認していた時、
とかStackOverFlowでみてたら
- targetSDK 24 〜 でsdk最新化していると、network_security_config.xml の設定が必要
- 全然更新されていない targetSDK 23あたりでビルドすると問題ない
な話が。。ようはandroid.jarに、ユーザー証明書を見ないような細工がされているという話
で、この細工されているandroid.jarが同梱されているアプリだと、Qittaにも乗っているように
- 証明書ファイルをダウンロードしファイルの拡張子を.pemから.cer変更しないと認識しない
なよくわかんない挙動をする事もあるよう。うーん。G様ほんと雑い。。リリース優先なんだろうけどな・・