Вероятно, не совсем то, что представляют собой проекты библиотеки Android, но вы могли бы добиться этого, используя интерфейс и функции наследования классов самого языка Java.
Библиотечный проект, кажется, хорошо справляется со слиянием / переопределением ресурсов родительского объекта в дочернем элементе и позволяет вам использовать одну кодовую базу с различными именами пакетов приложения.
Учитывая ваш обновленный комментарий об использовании библиотечных проектов, чтобы иметь одно издание приложения, которое использует AdMob, и одно, которое не использует, я пересмотрел этот ответ ...
Если вы не возражаете упаковать библиотеку AdMob (~ 138 КБ) в свое полное / платное издание, самое простое, что можно сделать, - это расширить класс Applcation и в нем объявить перечисление и статический метод, чтобы решить, должны ли объявления AdMob быть показано.
public class Application extends android.app.Application
{
public enum EditionType { LITE, FULL};
public static int getAdVisibilityForEdition(Context ctx)
{
if (EditionType.valueOf(ctx.getString(R.string.edition)) == EditionType.FULL)
{
return View.GONE;
}
return View.VISIBLE;
}
}
Вы добавите этот класс только в проект библиотеки. Во всех трех проектах вам нужно добавить запись в /res/Strings.xml следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="edition">LITE</string>
</resources>
Неважно, какое значение имеет эта строка в проекте библиотеки, но вы измените его в платных и поддерживаемых рекламой изданиях, используя FULL и LITE соответственно.
Наконец, чтобы ваши действия реагировали на эти значения, вызовите что-то вроде этого в вашем onCreate () или onResume ():
View ad = (View)this.findViewById(R.id.your_adMob_view_id)
ad.setVisibility(Application.getAdVisibilityForEdition
(this.getApplicationContext()));
Это будет хорошо работать с AdMob, поскольку код AdMob фактически не будет пытаться получить объявление, если вид не виден.
Если вы действительно не хотите иметь дополнительные 138 КБ для фляги AdMob и необходимые разрешения для манифеста в полной версии, есть более изящные способы сделать это, но для этого нужно использовать какую-то оболочку вокруг AdMob и либо изменяя макеты xml между выпусками (включая представление AdMob или нет), либо внедряйте представление AdMob в макет программно.
Надеюсь, это поможет.