Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android study part5

1,580 views

Published on

Trunkの講義の資料(5/5)です。
https://github.com/sakebook/TrunkStudy

内容
・復習: ライブラリを用いた通信(Retrofit)
・GoogleAnalyticsの導入(v4)
・APK署名
・BuildTypeによるログ出力の抑制
・Proguardを使ったリバースエンジニアリング対策

Published in: Devices & Hardware
  • Be the first to comment

Android study part5

  1. 1. 実践 ANDROIDアプリ開発 @JX通信社 酒本伸也 2015/10/7
  2. 2. 復習
  3. 3. RETROFIT + GOOGLE WEB SEARCH API
  4. 4. GOOGLE WEB SEARCH API • Deprecated • サンプルとして使いやすかったため • Qiita APIと比較して検証
  5. 5. web search api qiita api
  6. 6. 配列から始まる web search api qiita api
  7. 7. 配列から始まる web search api qiita api
  8. 8. 配列を持ってる web search api qiita api
  9. 9. 配列を持ってる web search api qiita api
  10. 10. indexがついてる web search api qiita api
  11. 11. indexがついてる web search api qiita api
  12. 12. • JsonDeserializerを継承 • Gsonのパースをカスタマイズ • jsonのパース位置を調整 • Dateオブジェクトのformatを設定 CATDESERIALIZER
  13. 13. • jsonのパース位置を調整 • Dateオブジェクトのformatを設定 CATDESERIALIZER
  14. 14. • CatResultModelを受け取り、メンバーの
 List<CatNewsModel>から取り出す
  15. 15. 効果測定
  16. 16. 効果測定 • 実際のデータを見て、施策の効果を測る。 • 効果を測定するためにデータを取る • Google Analytics
  17. 17. GOOGLE ANALYTICS • GAとよく略される • 無料で使え、開発も活発。 • 個人を特定するデータを送ってはいけない
  18. 18. 導入(V4) • Google Developer Consoleに
 プロジェクトの追加が必要 • 以下から行けばチュートリアルに則り
 作成できる • https://developers.google.com/mobile/add? platform=android&cntapi=analytics 
 (https://goo.gl/5YZ7D2)
  19. 19. • projectルートのbuild.gradle • app/build.gradle • configuration fileの追加 • AndroidManifest.xml • Applicationクラスでの初期化
  20. 20. • projectルートのbuild.gradle
  21. 21. • app/build.gradle
  22. 22. • チュートリアルで作成した
 「google-services.json」をapp/ に配置
  23. 23. • AndroidManifest.xml
  24. 24. APPLICATION • アプリ起動時と終了時に
 一度だけ呼ばれるクラス • 初回起動のActivityよりも先に呼ばれる • Applicationを継承したクラスを作成する
  25. 25. • trackerのインスタンス取得メソッド • Applicationクラスは終了時まで生き続ける
  26. 26. 準備完了 • 主に計測するのは次の2種類 • スクリーン • 画面が表示された時など • イベント • それ以外の任意の状況
  27. 27. スクリーン
  28. 28. • BaseActivityを作成しonCreateやonStartなどで
 計測するようにするとまとめられて楽 • 最近のGAだと自動で計測できる方法もある • Tracker.enableAutoActivityTracking(enabled) • xml要作成 • http://qiita.com/takashibagura/items/ 79a560c739b3a8af2714
  29. 29. イベント
  30. 30. APK署名
  31. 31. APK署名 • 署名されたAPK以外は端末に
 インストールできない • 署名にはReleaseとDebugがある • 開発中はDebugで署名されている
  32. 32. APK署名 • すでに端末に入っているAPKと
 同じパッケージネームでも署名が異なると
 上書きできない • 同一署名がされたAPK同士は
 データのやり取りが可能 • 署名をなくすと同じものは復元できない
  33. 33. 署名(証明書)作成
  34. 34. • .jksファイル • keystoreの
 パスワード • Aliasの
 パスワード • Certificateは
 必須ではない
  35. 35. GENYMOTIONで動かそう
  36. 36. LOG • 相変わらずLogが見える • 情報漏洩に繋がるので、見えないようにする • 手動で消していく?
  37. 37. 期待値 • コードを人力で変更したくない • バグの元 • 開発版だけログが出て、本番はログが出ない • アプリの状態を判定できるのか? • BuildTypesで判定できる
  38. 38. BUILDTYPES • 名の通りビルドの種類 • debugとreleaseは
 標準で用意されている • 追加することも可能
  39. 39. 判定 • 「BuildConfig」というクラスが
 自動生成されているのでそれを用いる • パッケージネームやバージョンもわかる
  40. 40. LOGを加工 • Logクラスをラップする • BuildTypesがdebugのときはLogが呼ばれない • 表示されない!
  41. 41. リバースエンジニアリング • .apkは.zipに置き換えることができる。 • 中身を展開して、情報を抜き取ったり
 悪意のある改ざんを行い、
 パッケージングされる可能性がある • 無防備でいるわけにはいかない!
  42. 42. 難読化
  43. 43. 難読化 • ソース(java)を一文字で表現するなどして、 コード量の圧縮と悪意のある人から
 読み解かれにくくする。
  44. 44. PROGUARD • Gradleに対応している難読化のためのツール • 難読化対象・及び非対象、内容を記述する • 通常難読化はrelease buildのみに行う
  45. 45. PROGUARDの設定 • minifyEnabled: 難読化を行うかどうか • proguardFiles: 難読化のルールを指定
  46. 46. PROGUARD-RULES.PRO • proguard-android.txt • AndroidのSDK周りで必要な記述がされて いる • proguard-rules.pro • 追加で必要な記述をここに書く
  47. 47. どう書けば? • 自身のコードはそのまま難読化にかけても
 動くかもしれないが
 果たしてライブラリはそうだろうか? • 主にライブラリを難読化対象から外す
 内容を記述することになる
  48. 48. • 追加で使用したライブラリ • retrofit • Picasso • PlayServicesAnalytics • 公式ページに大体書いてある
  49. 49. 誰も読めないんじゃ? • mappingが
 生成されるので、
 これを使い戻す。 • ReleaseAPKとセットで
 保存しておく
  50. 50. • ${sdk}/tools/proguard/bin/proguardgui.sh • エラー内容(スタックトレース) • mapping.txt

×