【DroidKaigi 2017】少し幸せになる技術
発表者
- kamedon
- Classmethod
この発表で幸せになりそうな人
- 初心者から中級者にステップアップしようとしている方
- Android開発をもっと楽にする
- つまづきにくくする
- アカウント停止されないようにする
アジェンダ
- Android Studio
- Build.gradle
- デバッグ
- OS, 端末
- ProGuard
- Google Play Console
Android Studio編
- Jetbrains製IDE
他のIDEとショートカットが違うので、イライラしてきた
- Find Action
- コマンドを検索でき、ショートカットまでわかる
- keymapを変更すると好みに設定できる
特定ファイルにもっと簡単に飛びたい
- Serch Everywhere
- Shift Shift
- ファイル名を簡単に検索できる
フォーマットを揃える
- Save Actionsで保存で自動でフォーマットを揃える
- Plugin
アンインストールインストールがめんどくさい
- Plugin : ADB IDEA
- ショートカットでadb操作できる
テストで通ってないところを知りたい
- Run test with coverageを実行
Build.gradle編
- アプリの基本情報を設定
開発版とリリース版て共存できる?
- ビルドバリアントとプロダクトフレーバーを使うとできる
- Suffixをつけてあげることで、共存できる
開発と製品版で定数を分けたい
- ビルドバリアントとプロダクトフレーバーでできる
- buildType
- productFravars
開発版とリリース版どっちなのかわかりやすくしたい
-ビルドバリアントとプロダクトフレーバーで分ける - 優先順位は上から順番 - src/demoDebug/ (ビルドバリアント フレーバー) - src/debug/ (ビルドバリアント) - src/demo/ (フレーバー) - src/main/ (メイン) - 例えばこれを使って本番とアプリ名を変えたり、アイコンを変えればわかりやすくなる
ビルドバリアントとプロダクトフレーバーの使い分けがわからない
- ビルドバリアント:環境の設定
- 本番サーバーと開発サーバーのアドレス
- 本番用署名、開発用署名
- プロダクトフレーバー:アプリの振る舞い
- デバッグモードの切り替え
- 無料版課金版の切り替え
バージョンコードとバージョン名管理がめんどくさい
- 開発者は、VersionNameをあげたい
- GooglePlayは、VersionNameが上がっていれば良い
- 解決方法
- versionからersionCodeを作ってしまう
署名の管理どうしたら良いの?
- 署名をbuild.gradleにベタがき
- Private Repositoryなどなら有効
- CIからも扱いやすい
- ファイルに書き出す
- gitで虫設定し、鍵は別管理
- keystore.properties
デバッグ編
製品ばんのときはログを出したくない
- JakeWharton/timberを使う
- Debugだけログを出すことが簡単
- ログで何を出すか帰るのも簡単
通信部分のデバッグがしづらい
メモリリークのデバッグがしんどい
- square/leakcanaryを使うと簡単
- Applicationに書くだけでリーク時に通知をしてくれる
LogのせいでUnit Testでエラーが出る
Proguard
- セキュリティ的に最低限リリース時に必ず設定する
- アプリサイズの削減
- 気休め難読化
65メソッドしかできないの?
- 64kメソッドhビルドができない
- Proguardをかけることでメソッド数の削減
- それでもダメな場合はMultidexを用いる
Proguardをかけるとエラーになる 変な汗が出てきた
- ProGuardがしてることを理解する
- 未使用のメソッド削除
- クラスメイ、メソッドをa,bなどのリネーム
- リフレクションを使用しているところでなんたら
リリースの時だけProGuardをかけるとドキドキする
- 開発中にもProguardをかけると安心
- ビルドが遅くなるのが欠点
- リネームはしないほうがいい
クラッシュレポートが難読化されていて見辛い
- 難読化時に生成されるmapping.txtをGoogle Play Consoleにアップロードしよう
OS, 端末編
- 機種依存、バージョン依存、パーミッション、タスクキラーなどで再現しづらいことがなんたら
機種依存が激しすぎ
- 頑張る
- 検証センターなどを利用する
- SupportLibraryがある機能を使う
ランタイムパーミッションの対応
GooglePlayConsole編
Androidは審査がないからやりたい放題なんでしょ?
- 最近は厳しくなってきた
- 必ずデベロッパーポリシーを確認
- 個人情報や機密情報
- 収益化と広告
いつ公開されるのか知りたい
- 公開ボタンを押して実際に反映されるのは2、三時間ご
- 運が悪いと12時間後
- 通知の設定を入れるかGoogle Play Consoleアプリを入れよう
とはいえ早くならないの?
- 経験則だけど、α版などを公開してからリリーすると早くなる気がする
まとめ
- AndroidStudio素敵
- デバッグツールも豊富になってきた
- ProGuardかけると安心
- 機種依存は頑張る