Постановка проблемы: я хочу использовать библиотеку только в среде разработки, но не в выпуске (выпуск в магазине приложений). И я не хочу, чтобы эта библиотека также была встроена в выпуск apk.
Мой подход:
Итак, у меня есть такая настройка среды:
Разработка -
- Отлаживать
- Выпускать
Хранить -
- Отлаживать
- Релиз -> Это идет в магазин игр
В градиенте я добавил -
debugCompile 'com.some.library'
Который загружает эту библиотеку для Разработка — Отладка и Хранение — Отладка.
И затем я создал два класса приложений,
- ApplicationWithoutDebugLibrary расширяет MultiDexApplication — класс приложения, который не инициализирует библиотеку.
- ApplicationWithDebugLibrary расширяет ApplicationWithoutDebugLibrary — класс приложения, который инициализирует библиотеку
И я определил в gradle загрузку разных файлов приложений для разных вкусов.
productFlavors {
Development {
applicationId "xyzzzz"
manifestPlaceholders = [application:"com.xyz.ApplicationWithDebugLibrary"]
}
store {
applicationId "11111"
manifestPlaceholders = [application:"com.xyz.ApplicationWithoutDebugLibrary"]
}
}
И в манифесте я написал это:
<application
android:name="${application}"...
Итак, для отладки он работает нормально, но когда я собираю apk Store-Release/Development-Release, он не может скомпилировать ApplicationWithDebugLibrary.java, так как я использую библиотеку, которая не скомпилирована в файле gradle для версии выпуска.
Итак, есть ли способ избежать загрузки этого класса для варианта выпуска Store или любого альтернативного решения, в котором я могу загрузить эту библиотеку только в среде разработки.