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.

sharedUserIdを使った俺得開発ツールの作り方

1,543 views

Published on

2018-07-16のpotatotips #53 (iOS/Android開発Tips共有会)の発表資料です。
https://potatotips.connpass.com/event/92905/

Published in: Technology
  • Be the first to comment

sharedUserIdを使った俺得開発ツールの作り方

  1. 1. 2018-07-26 potatotips #53 @cattaka_net sharedUserIdを使った 俺得開発ツールの作り方 Takao Sumitomo
  2. 2. 2018-07-26 potatotips #53 @cattaka_net 自己紹介 ● 住友 孝郎(Takao Sumitomo) – Wantedly 所属 – Androidアプリを主に担当 – @cattaka_net ● Go書かないけどゴーファーが好き
  3. 3. 2018-07-26 potatotips #53 @cattaka_net 名刺管理アプリ作ってます
  4. 4. みなさん、 アプリの開発用画面、 どさくさに紛れて作ってるよね
  5. 5. 設定画面とかにコッソリ
  6. 6. 内部リリースバージョンや 特定条件で出るようにしてるよね ● Product Flavorとか ● ユーザーIDとか
  7. 7. 僕らも内部リリース版は何個かある ←Production版(正式版) RC版(リリース候補)→ ←QA版(テスト環境) ←Sandbox版(壊してもいい環境) Develop版(テスト環境)→ ※:アイコンはリリース版の色相を適当に回してる
  8. 8. 課題 APIチームより、 開発のためにサーバーの接続先を変えたい
  9. 9. サーバーが沢山あるので、 1つだけ手元に繋ぎたい アプリ Server3Server2Server1 アプリ Server3Server2Server1 ローカルのマシンで Server3 通常時 サーバーの開発時
  10. 10. 設定画面に 書き換え機能を作った
  11. 11. 解決
  12. 12. 課題 初回の起動の プロセスの立ち上がり時の 通信先を変えたい ※:起動直後のA/Bテストとかに使う
  13. 13. 初回の起動
  14. 14. プロセスの立ち上がり時
  15. 15. 無理だ、、、
  16. 16. どうしよう、、、
  17. 17. そういえば sharedUserId ってあったよね
  18. 18. sharedUserId について ● AndroidのLinuxのユーザーIDを共有する仕組み ● 通常、アプリごとに 異なる1つのユーザーIDが割り当てられる ● 意図的に同じユーザーIDにできる
  19. 19. 開発ツールを別アプリにして、 同じユーザーIDにしたらいいよね
  20. 20. 開発ツール爆誕 People Dev Tool
  21. 21. アプリの設定値を強引に書き換えるぜ
  22. 22. できること
  23. 23. アプリを起動しなくても ● 各種プリファレンスの 書き換え ● エンドポイントの切り替え
  24. 24. その他 ● アプリの起動 ● プロセスの強制停止 ● OS側の設定画面を直接開く
  25. 25. 超便利
  26. 26. 実装の話
  27. 27. sharedUserId ● それぞれのflavorのAndroidManifest.xmlに 指定を入れる
  28. 28. 別アプリのSharedPreferencesにアクセス ● createPackageContext メソッドで別アプリのContextを作る ● その Context からSharedPreferences を得る public SharedPreferences getSharedPreferences(PackageInfo info, String name, int mode) throws NameNotFoundException { Context targetContext = createPackageContext(info.packageName, mode); return targetContext.getSharedPreferences(name, mode); }
  29. 29. 注意点 ● 同一の署名であること – 開発用の keystore は共有してる ● sharedUserIdの指定は再インストールが必要 – なので飽くまで開発版のみ
  30. 30. ちなみに
  31. 31. アイコンもちゃんと作りました オリジナル画像: https://coder.today/first-steps-in-learning-golang-d0f3dbb3b6d7
  32. 32. ゴーファー可愛いよね
  33. 33. というわけで
  34. 34. 欲しいものは自分で作る
  35. 35. エンジニアだしね
  36. 36. 2018-07-26 potatotips #53 @cattaka_net ご清聴ありがとうございました

×