Я нашел простой способ сделать это в затмении. Я был очень удивлен тем, как легко это было, когда я обнаружил это.
- В свойствах проекта для com.app.free отметьте «Is Library» как true (вы должны скомпилировать проект хотя бы один раз, прежде чем изменять его, иначе вы получите сообщение о том, что проекты библиотеки не могут быть скомпилированы, если вы получили эта ошибка просто отмените проверку, скомпилируйте, а затем повторно проверьте.
- создать новый проект com.app.pro
- добавить проект com.app.free в качестве библиотеки в настройках проекта в разделе android проекта pro *
- создать новый класс MyApplication в com.app.pro и расширить приложение
- переопределить onCreate () ПРИМЕЧАНИЕ. Для тех товарищей по копированию / вставке это НЕ то же самое, что и набор действий onCreate (Bundle saveInstanceState). Вы должны удалить аргумент Bundle, так как это приложение, а не действие.
- Затем добавьте или установите статическую переменную, которая будет считываться в методе проверки, для проверки лицензии. EX: IS_PRO = true; затем метод проверки считывает переменную и возвращает true, если IS_PRO имеет значение true.
- Скопировать содержимое манифеста из com.app.free в com.app.pro
- добавить android: name = "MyApplication" в тег приложения в манифесте com.app.pro
- добавьте com.app.free перед атрибутом имени для всех действий. (это сообщает приложению, что ваши действия находятся в пакете библиотеки, который является бесплатной версией) EX: android: name = ". MainActivity" => android: name = "com.app.free.MainActivity"
- Теперь скомпилируйте и у вас будет профессиональная версия
Этот метод предполагает, что вы используете метод глобальной проверки. Например, я создал класс, который соединяет пользователей с базой данных, размещенной в моем домене, которая определяет, когда пользователь впервые установил приложение. Для любых профессиональных действий я проверяю LicenseClass.isValidLicense (), который сравнивает даты и возвращает true, если оно было меньше, чем желаемое количество дней. в функции isValidLicense () я проверяю, установлено ли для Application.IS_PRO значение true, и возвращает true, если оно установлено.
Так что теперь вы можете делать как можно больше изменений, и все, что вам нужно сделать, это перекомпилировать оба. Единственное, что нужно иметь в виду, это то, что любые изменения, которые вы вносите в манифест com.app.free, должны быть отражены в про. Но это касается любого приложения, потому что приложения для Android требуют, чтобы вы указали, какие действия вы собираетесь использовать, несмотря ни на что.
ПРИМЕЧАНИЕ. Вы можете удалить все активы и ресурсы (однако не удаляйте саму папку res), которые автоматически создаются при создании проекта, поскольку они не будут использоваться. Кроме того, единственный необходимый файл класса - это файл MyApplication из шага 3. Это означает, что вы также можете удалить класс MainActivity.class, который также генерируется автоматически, поскольку он также никогда не используется. Вы также можете удалить любые теги, которые не используются в используемой в профессиональной версии. Пример: у меня есть операция BuyPro, которая открывается, если проверка не удалась. Так как валидация в версии Pro никогда не завершится неудачей, это не требуется. Конечно, все эти удаления являются необязательными, просто сообщая вам, что я выучил.
CONS: Единственное, что я нашел до сих пор, это то, что вы не можете использовать операторы switch с вашими переменными ресурса, потому что они больше не являются константами. Поэтому, когда вы используете проект в качестве библиотеки, любая переменная, которую вы создаете в файле strings.xml, например, автоматически переопределяется, если вы объявите переменную с тем же именем в профессиональной версии. Для меня это не обман, потому что я не люблю использовать состояния переключателей в Java, потому что они ограничивают вас переключением только на тип int и требуют постоянных значений. Что означает в java, что я обычно имею к нам, если ... в любом случае высказывает. Кроме того, Eclipse фактически поможет преобразовать операторы переключателей, если вы поместите курсор на ключевое слово переключателя и нажмете Ctrl + 1, а затем щелкните преобразовать в if else. Кроме того, я нахожу весьма полезным, что ресурсы переопределяются, потому что вы можете сделать такие вещи, как изменить имя приложения с «app free» на «app pro» или загрузить новый чертеж, например, значок приложения, просто создав новую версию в том месте, где он существует в бесплатном приложении. Пример: если файл res / values / string.xml содержит, скажем, 100 строковых переменных, но все, что вам нужно или нужно изменить в профессиональной версии, это имя_приложения, просто создайте заново файл res / values / string.xml (НЕ копировать) и добавьте переменную app_name. , Теперь переменная app_name в бесплатной версии будет переопределена, что означает, что файл string.xml в профессиональной версии должен содержать только переменную 1 вместо 100, поскольку это единственная переменная, которая изменилась. Очень просто. : -)
РЕДАКТИРОВАТЬ: я обнаружил, что eclipse не позволяет вам экспортировать .apk для библиотек, поэтому вы должны снять флажок «Is Library» в бесплатной версии после того, как вы добавили его в качестве библиотеки в профессиональной версии. Насколько я могу судить, единственное, что он делает, это заставляет затмение не предупреждать вас о проблеме оператора switch. Кроме этого, он, кажется, работает просто отлично.