2015-03-05 2 views
0

Я пытаюсь отделить функции отладки и выпуска в своем приложении. Например, я использую библиотеки Stetho и Mortar. Оба они требуют переопределенного класса Application. Но я бы хотел, чтобы Stetho был доступен только в сборке отладки. Существует по крайней мере два подхода:Утилиты Android build с различными приложениями

Есть MyApplication класс в выпусках и отладочных вариантах с разным кодом. Но в этом случае код, который должен быть пользователем в выпуске, дублируется.

MyDebugApplication распространяется MyApplication и содержит только связанные с отладки. В этом случае требуется два файла манифеста и некоторые из них объединены.

Так что мне интересно, какой подход более эффективен?

ответ

0

Вы должны использовать два базовых класса MyBaseApplication в выпуске и отладке, а затем расширить класс MyApplication на основной области.

Таким образом, логика не дублируется, и вы будете иметь два разных поведения при отладке и выпуске.

+1

небольшое примечание: вы должны поместить классы MyApplication в один и тот же пакет, чтобы вы могли использовать только один файл манифеста :) – PaMaDo

1

Я принял другой подход. Я использую конфигурации, чтобы определить, что включено .. вот простой вариант:

if (BuildConfig.DEBUG) { 
     Stetho.initialize(Stetho.newInitializerBuilder(app) 
       .enableDumpapp(Stetho.defaultDumperPluginsProvider(app)) 
       .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(app)) 
       .build()); 
     Timber.d("Stetho configured"); 
    } 

Но представьте себе, вместо того, чтобы просто BuildConfig.DEBUG использовать булево ресурс:

app.getResources().getBoolean(R.bool.stetho_enabled)

с:

<bool name="wallet_production">true</bool>

в файле с settings.xml ресурсов, или что-то ... вы даже можете получить новые идеи и имейте это в виду переменную переменную Optimizely или подобное.

Я предпочитаю это, потому что тогда, если мне нужно включить Stetho или войти в систему или что-то еще в сборке релиза, это так же просто, как изменить xml-файл.

+1

Этот подход хранит библиотеку в сборке. Если вы используете lib только в сборках отладки, ваш последний файл apk меньше. –

+0

справедливо, если это вас беспокоит. В нашем случае это стоит немного дополнительного размера для гибкости и снижения сложности – danb

Смежные вопросы