SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
実践
ANDROIDアプリ開発
@JX通信社
酒本伸也
2015/10/7
復習
RETROFIT
+
GOOGLE WEB SEARCH API
GOOGLE WEB SEARCH API
• Deprecated
• サンプルとして使いやすかったため
• Qiita APIと比較して検証
web search api qiita api
配列から始まる
web search api qiita api
配列から始まる
web search api qiita api
配列を持ってる
web search api qiita api
配列を持ってる
web search api qiita api
indexがついてる
web search api qiita api
indexがついてる
web search api qiita api
• JsonDeserializerを継承
• Gsonのパースをカスタマイズ
• jsonのパース位置を調整
• Dateオブジェクトのformatを設定
CATDESERIALIZER
• jsonのパース位置を調整
• Dateオブジェクトのformatを設定
CATDESERIALIZER
• CatResultModelを受け取り、メンバーの

List<CatNewsModel>から取り出す
効果測定
効果測定
• 実際のデータを見て、施策の効果を測る。
• 効果を測定するためにデータを取る
• Google Analytics
GOOGLE ANALYTICS
• GAとよく略される
• 無料で使え、開発も活発。
• 個人を特定するデータを送ってはいけない
導入(V4)
• Google Developer Consoleに

プロジェクトの追加が必要
• 以下から行けばチュートリアルに則り

作成できる
• https://developers.google.com/mobile/add?
platform=android&cntapi=analytics 

(https://goo.gl/5YZ7D2)
• projectルートのbuild.gradle
• app/build.gradle
• configuration fileの追加
• AndroidManifest.xml
• Applicationクラスでの初期化
• projectルートのbuild.gradle
• app/build.gradle
• チュートリアルで作成した

「google-services.json」をapp/ に配置
• AndroidManifest.xml
APPLICATION
• アプリ起動時と終了時に

一度だけ呼ばれるクラス
• 初回起動のActivityよりも先に呼ばれる
• Applicationを継承したクラスを作成する
• trackerのインスタンス取得メソッド
• Applicationクラスは終了時まで生き続ける
準備完了
• 主に計測するのは次の2種類
• スクリーン
• 画面が表示された時など
• イベント
• それ以外の任意の状況
スクリーン
• BaseActivityを作成しonCreateやonStartなどで

計測するようにするとまとめられて楽
• 最近のGAだと自動で計測できる方法もある
• Tracker.enableAutoActivityTracking(enabled)
• xml要作成
• http://qiita.com/takashibagura/items/
79a560c739b3a8af2714
イベント
APK署名
APK署名
• 署名されたAPK以外は端末に

インストールできない
• 署名にはReleaseとDebugがある
• 開発中はDebugで署名されている
APK署名
• すでに端末に入っているAPKと

同じパッケージネームでも署名が異なると

上書きできない
• 同一署名がされたAPK同士は

データのやり取りが可能
• 署名をなくすと同じものは復元できない
署名(証明書)作成
• .jksファイル
• keystoreの

パスワード
• Aliasの

パスワード
• Certificateは

必須ではない
GENYMOTIONで動かそう
LOG
• 相変わらずLogが見える
• 情報漏洩に繋がるので、見えないようにする
• 手動で消していく?
期待値
• コードを人力で変更したくない
• バグの元
• 開発版だけログが出て、本番はログが出ない
• アプリの状態を判定できるのか?
• BuildTypesで判定できる
BUILDTYPES
• 名の通りビルドの種類
• debugとreleaseは

標準で用意されている
• 追加することも可能
判定
• 「BuildConfig」というクラスが

自動生成されているのでそれを用いる
• パッケージネームやバージョンもわかる
LOGを加工
• Logクラスをラップする
• BuildTypesがdebugのときはLogが呼ばれない
• 表示されない!
リバースエンジニアリング
• .apkは.zipに置き換えることができる。
• 中身を展開して、情報を抜き取ったり

悪意のある改ざんを行い、

パッケージングされる可能性がある
• 無防備でいるわけにはいかない!
難読化
難読化
• ソース(java)を一文字で表現するなどして、
コード量の圧縮と悪意のある人から

読み解かれにくくする。
PROGUARD
• Gradleに対応している難読化のためのツール
• 難読化対象・及び非対象、内容を記述する
• 通常難読化はrelease buildのみに行う
PROGUARDの設定
• minifyEnabled: 難読化を行うかどうか
• proguardFiles: 難読化のルールを指定
PROGUARD-RULES.PRO
• proguard-android.txt
• AndroidのSDK周りで必要な記述がされて
いる
• proguard-rules.pro
• 追加で必要な記述をここに書く
どう書けば?
• 自身のコードはそのまま難読化にかけても

動くかもしれないが

果たしてライブラリはそうだろうか?
• 主にライブラリを難読化対象から外す

内容を記述することになる
• 追加で使用したライブラリ
• retrofit
• Picasso
• PlayServicesAnalytics
• 公式ページに大体書いてある
誰も読めないんじゃ?
• mappingが

生成されるので、

これを使い戻す。
• ReleaseAPKとセットで

保存しておく
• ${sdk}/tools/proguard/bin/proguardgui.sh
• エラー内容(スタックトレース)
• mapping.txt

Weitere ähnliche Inhalte

Ähnlich wie Android study part5

Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える健一 辰濱
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama健一 辰濱
 
ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏kintone papers
 
WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作Takami Kazuya
 
GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会Yosuke Onoue
 
Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例oistudy
 
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現インフラジスティックス・ジャパン株式会社
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkunsYohei Sato
 
20161214 re growth-sapporo
20161214 re growth-sapporo20161214 re growth-sapporo
20161214 re growth-sapporoSatoru Ishikawa
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebKensaku Komatsu
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込むKazumi IWANAGA
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionRicardo Alcocer
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionralcocer
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーAyumu Kawaguchi
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Shotaro Suzuki
 
What's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseWhat's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseShotaro Suzuki
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Nobuaki Aoki
 
AngularFireで楽々バックエンド
AngularFireで楽々バックエンドAngularFireで楽々バックエンド
AngularFireで楽々バックエンドYosuke Onoue
 

Ähnlich wie Android study part5 (20)

Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏ノンプログラミングで API はじめて体験!_築山 春木氏
ノンプログラミングで API はじめて体験!_築山 春木氏
 
WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作
 
GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会
 
Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例Oisix勉強会 google analiticsapiを使用したサイト開発例
Oisix勉強会 google analiticsapiを使用したサイト開発例
 
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
 
Tokyowebmining5 yokkuns
Tokyowebmining5 yokkunsTokyowebmining5 yokkuns
Tokyowebmining5 yokkuns
 
20161214 re growth-sapporo
20161214 re growth-sapporo20161214 re growth-sapporo
20161214 re growth-sapporo
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
 
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
 
1Day works shop
1Day works shop1Day works shop
1Day works shop
 
What's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 ReleaseWhat's New in the Elastic 8.4 Release
What's New in the Elastic 8.4 Release
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築
 
AngularFireで楽々バックエンド
AngularFireで楽々バックエンドAngularFireで楽々バックエンド
AngularFireで楽々バックエンド
 

Mehr von shinya sakemoto

ScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたいScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたいshinya sakemoto
 
Gitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発するGitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発するshinya sakemoto
 
Flutter for Webで値を保存する
Flutter for Webで値を保存するFlutter for Webで値を保存する
Flutter for Webで値を保存するshinya sakemoto
 
チュートリアルをリッチにしよう
チュートリアルをリッチにしようチュートリアルをリッチにしよう
チュートリアルをリッチにしようshinya sakemoto
 
Material Designなdrawerを実装したい
Material Designなdrawerを実装したいMaterial Designなdrawerを実装したい
Material Designなdrawerを実装したいshinya sakemoto
 
Gradleプラグインを作成してみた
Gradleプラグインを作成してみたGradleプラグインを作成してみた
Gradleプラグインを作成してみたshinya sakemoto
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみたshinya sakemoto
 
インストールリファラでハマった話
インストールリファラでハマった話インストールリファラでハマった話
インストールリファラでハマった話shinya sakemoto
 
ちょっと優しい入力項目
ちょっと優しい入力項目ちょっと優しい入力項目
ちょっと優しい入力項目shinya sakemoto
 
foursquareの楽しみ方
foursquareの楽しみ方foursquareの楽しみ方
foursquareの楽しみ方shinya sakemoto
 

Mehr von shinya sakemoto (13)

ScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたいScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたい
 
Gitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発するGitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発する
 
Flutter for Webで値を保存する
Flutter for Webで値を保存するFlutter for Webで値を保存する
Flutter for Webで値を保存する
 
チュートリアルをリッチにしよう
チュートリアルをリッチにしようチュートリアルをリッチにしよう
チュートリアルをリッチにしよう
 
Android study part3
Android study part3Android study part3
Android study part3
 
Android study part2
Android study part2Android study part2
Android study part2
 
Android study part1
Android study part1Android study part1
Android study part1
 
Material Designなdrawerを実装したい
Material Designなdrawerを実装したいMaterial Designなdrawerを実装したい
Material Designなdrawerを実装したい
 
Gradleプラグインを作成してみた
Gradleプラグインを作成してみたGradleプラグインを作成してみた
Gradleプラグインを作成してみた
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
 
インストールリファラでハマった話
インストールリファラでハマった話インストールリファラでハマった話
インストールリファラでハマった話
 
ちょっと優しい入力項目
ちょっと優しい入力項目ちょっと優しい入力項目
ちょっと優しい入力項目
 
foursquareの楽しみ方
foursquareの楽しみ方foursquareの楽しみ方
foursquareの楽しみ方
 

Android study part5