Мы используем Android Library Project для совместного использования основных классов и ресурсов в разных целях (целях) нашего приложения для Android. Android-проекты для каждой конкретной цели reference the Core library project (за кулисами Eclipse создает и ссылается на банку из проекта библиотеки ссылок).Лучшая практика: расширение или переопределение класса проекта библиотеки Android
Переопределение ресурсов, таких как изображения и макеты XML, очень просто. Файлы ресурсов, размещенные в целевом проекте, такие как значок приложения или макет XML, автоматически переопределяют ресурсы основной библиотеки с тем же именем при создании приложения. Однако иногда класс должен быть переопределен, чтобы включить поведение, специфичное для конкретного объекта. Например, экран настроек целевых настроек Amazon не может содержать ссылку на страницу приложения Google Play, требующую изменения в предпочтениях проекта Amazon.xml и предпочтения класса Activity.
Цель состоит в том, чтобы уменьшить количество дублирующихся кодов среди целевых проектов, удалив как можно больше целевого кода из библиотеки Core. Мы придумали пару подходов к реализации логики, специфичной для разных целей:
- Напишите функции для конкретных целей в классах классов ядра и используйте, если/переключаете блоки, чтобы выбрать поведение на основе SKU продукта. Этот подход не очень модульный и раздувает базовую библиотечную базу.
- Расширение конкретного класса ядра в целевом проекте и переопределение базовых (основных) функций класса по мере необходимости. Затем сохранить ссылку на объект базового класса в библиотеке ядра и создать его экземпляр с протяженным объектом класса (от How to override a class within an Android library project?)
Существуют ли другие стратегии переопределить или расширить Android класса проекта библиотеки? Каковы некоторые из лучших практик для совместного использования и распространения общих классов среди целевых приложений для Android?
_ (за кадром, Eclipse создает и ссылается на баночку из ссылочного проекта библиотеки) _ - Можете ли вы объяснить, как вам удалось получить эту работу, это официально не поддерживается SDK еще, в соответствии с [этот блог] (http://android-developers.blogspot.co.nz/2011/10/changes-to-library-projects-in-android.html), опубликованный ранее. И в последней заметке о выпуске SDK r17 я не вижу в какой-либо главе упоминания о том, что это отсутствие функциональных возможностей было устранено. – yorkw