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

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