Имя приложения в AndroidManifest при сборке с multidex=true

Я пытался включить поддержку Parse Push в свое приложение, следуя инструкциям из этой вики на GitHub. При сборке под Android последним камнем преткновения было это сообщение об ошибке в журнале сборки:

Атрибут «имя» привязан к пространству имен «http://schemas.android.com/apk/res/android" уже был указан для элемента "приложение".

Оказалось, что комбинация подсказки сборки

codename1.arg.android.multidex=true

а также

codename1.arg.android.xapplication_attr=android\:name\="com.parse4cn1.nativeinterface.CN1AndroidApplication"

вызвал эту проблему. При включенном мультидексе имя приложения становится android.support.multidex.MultiDexApplication

Я решил это, установив multidex в false, но что, если мне нужно, чтобы это было true?


person Yngve Moe    schedule 15.04.2016    source источник


Ответы (2)


Я не думаю, что это связано с процессом multi-dex. В вики parse4cn1 упоминается об изменении android.xapplication_attr, к которому, как я предполагаю, вы добавили атрибут name. Это неверно, так как имя будет введено в действие, которое уже названо.

person Shai Almog    schedule 16.04.2016
comment
Наверное, я недостаточно внимательно прочитал вики. В нем упоминается случай, когда у вас уже есть класс приложения, что, по-видимому, имеет место, когда multidex=true. - person Yngve Moe; 16.04.2016

Рад видеть, что вы нашли решение проблемы. Вы упомянули, что используете Parse.com для push-уведомлений. Имейте в виду, что Parse.com скоро закроется. На данный момент Parse Server с открытым исходным кодом поддерживает push-уведомления только для Android и iOS (но не для Windows Phone). Более того, Parse Server вводит ограничение, которого нет в Parse.com, а именно : необходимость предоставления главного ключа вашего приложения для запуска push-уведомлений со стороны клиента.

По замыслу parse4cn1 не выполняет никаких операций, требующих мастер-ключа из соображений безопасности. Так что, если это ограничение остается, а инициируемое клиентом push-уведомление является для вас интересным вариантом использования, вам, вероятно, потребуется написать облачный код Javascript на стороне сервера, который затем можно будет вызывать с помощью parse4cn1 для запуска ваших push-запросов.

В настоящее время я обновляю parse4cn1, чтобы включить поддержку Parse Server. Однако я не думаю, что буду обновлять функциональность, связанную с push-уведомлениями, в следующем выпуске. Поэтому, пожалуйста, имейте в виду эти возможные ограничения, когда будете двигаться вперед. Если вас интересуют только push-уведомления, вы также можете рассмотреть возможность использования других специализированных push-провайдеров.

Всего наилучшего.

person sidiabale    schedule 22.04.2016
comment
Спасибо, я не знал о проблеме с мастер-ключом в Parse Server. Возможно, я посмотрю на некоторых других поставщиков. - person Yngve Moe; 23.04.2016