Activity Alias のdebug時差し替え利用を考えてみた
はじめに
Activity Alias の説明を読んでて、イマイチ利用利点がわからなかったんだけど
の時、debug時にActivity差し替えられると便利かなーと思って調べたのでメモ
動作環境
宣言記述側
- app/src/main/AndroidManifest.xml
<activity android:name="hoge.fuga.maiu.MainRealActivity"> </activity> <activity-alias android:name="hoge.fuga.maiu.MainActivity" android:targetActivity="hoge.fuga.maiu.MainRealActivity"/>
- app/src/debug/AndroidManifest.xml
<activity android:name="hoge.fuga.maiu.MainDebugActivity"> </activity> <activity-alias tools:replace="android:targetActivity" //★ android:name="hoge.fuga.maiu.MainActivity" android:targetActivity="hoge.fuga.maiu.MainDebugActivity"/>
- app/src/debug/MainDebugActivity.java
public class MainDebugActivity extends MainRealActivity{ }
な感じを想定。ようはよくある
- Application => DebugApplication
のActivity版をしたかったイメージ
呼び出し側の書き方
これ結構悩んだ・・・・
Intent intent = new Intent(this,MainActivity.class); startActivity(intent);
で呼ぼうとするとエラーに・・・
まあ MainActivity.class自体の実体がないから当たり前だが。。。
で色々と調べたら、下記ならOK。
build.gradleの設定でパッケージ名のみ違うdebug.apkを作る上での注意点メモ - exception think
Intent intent = new Intent(); intent.setClassName(getPackageName(), "hoge.fuga.maiu.MainActivity"); //★ startActivity(intent);
又は
Intent intent = new Intent(); ComponentName componentName = new ComponentName(getPackageName(),"hoge.fuga.maiu.MainActivity"); intent.setComponent(componentName); startActivity(intent);
参考サイト
debugフォルダ運用での注意点
運用時の注意点
main res values //1 values-ja //3 debug res values //2 values-ja //4
という感じで運用していて、debug-日本語で実行した場合、
上記の順番でリソースは上書きされる
上書き可能なもの
上書き不可なもの
- styleやattlibute定義のid
- これマージされる時に別扱いっぽい
debugフォルダだけにあっても問題ないもの
- sampleデータ
- debug用のクラス(今回と同じように replaceタグで差し替え運用)