2011-06-01 1 views
1

У меня есть небольшой проект Android, который я использую в качестве основного проекта. Из этого основного проекта я хочу иметь возможность делать настройки.Тот же проект, но настраиваемый и устанавливаемый рядом друг с другом?

У меня есть приложение в формате рамки, используя стандартные значки, кнопки и т. Д. Я хочу, чтобы иметь возможность создавать разные версии с различными значками и кнопками.

Это я знаю, как это сделать. (У меня будет два отдельных файла apk, оба с тем же кодом, но с разными ресурсами)

Однако я хочу иметь возможность одновременно устанавливать основной проект и настройку на одном устройстве. В настоящее время один будет перезаписывать другой.

Я попытался изменить пакет в манифесте, но это, в свою очередь, означает, что мне придется также изменить все импортные данные для R.java в моих файлах Java, этого я и хочу избежать.

Можно ли изменить только что-то в xml, что позволит мне иметь два проекта, используя одни и те же файлы Java, но с разными ресурсами?

ответ

2

Вы должны использовать Android-библиотеки.

Поместите весь свой код приложения в одну библиотеку Android, а затем создайте два приложения для Android, в которых есть пользовательские значки и разные имена пакетов. Ресурсы, определенные в окончательных Android-приложениях, переопределяют все уже существующие ресурсы в библиотеке Android.

Один недостаток: вам нужно иметь почти идентичные копии файлов AndroidManifest.xml в вашем приложении для Android (но они все равно должны иметь разные имена пакетов).

Для получения дополнительной информации:

  1. документация Андроида: Settings up Android Library project
  2. Мой пост: Android Application, Android Libraries and Jar Libraries. Это один описывает, как Android библиотеки работают.
+0

Это единственный вариант? Похоже, что я немного переборщил с тем, что хочу, у меня уже есть раздел, основанный на VSS, который позволяет мне легко создавать два проекта, моя единственная проблема в том, что они перезаписывают друг друга при установке. Если библиотека - мой единственный вариант, это приведет к тому, что все это снова будет разбито по внешнему виду. Но я полагаю, что лучше, чем изменить все R-импорт. –

+1

Вы можете заставить «R-класс быть расположенным в пакете, который не зависит от пакета, определенного в AndroidManifest. Но для этого потребуется довольно некоторое кодирование (как ant-скрипты, так и пользовательские Java-задачи для муравья). С другой стороны, Android-библиотека не беспокоит. Его на самом деле очень легко и интуитивно, когда вы привыкаете к нему. Кроме того, Android-библиотека может быть преобразована в Android-приложение (и наоборот) через секунду. – inazaruk

2

Вам следует создать проект библиотеки, содержащий весь исходный код, и создать проект для каждого из устанавливаемых вами пакетов, который ссылается на проект библиотеки. Затем вы можете определить/переопределить любые определения ресурсов в устанавливаемых проектах.