Ответ 1
Столкнулась с той же проблемой.
PRODUCT_BUNDLE_IDENTIFIER
- это переменная в файле project.pbxproj. Измените это на все, что хотите, и оно будет отображаться как в вашем Info.plist, так и в настройках проекта.
Я настраиваю Jenkins для автоматизации процесса сборки. В частности, для моих нужд я хотел бы иметь возможность устанавливать различные идентификаторы пакетов.
Я использую плагин Xcode Jenkins для установки идентификатора пакета:
Проблема в том, что это изменит идентификатор пакета в файле Info.plist и в MyTarget > General > Bundle Identifier. Но он не изменит идентификатор пакета в настройках сборки > Упаковкa > Идентификатор пакета продуктов.
То же самое происходит, если я делаю это вручную. Я создаю новый проект в Xcode 7. По умолчанию три значения:
Когда я изменяю значение в файле Info.plist
следующим образом:
Другими двумя значениями будут:
Итак, как вы можете видеть, что значение в настройках сборки не меняется. Если я в Xcode, я меняю это значение вручную, но если я создаю проект в Jenkins, это проблема bis.
Кто-нибудь сталкивался с той же проблемой? Как вы справляетесь с этим?
Спасибо!
Столкнулась с той же проблемой.
PRODUCT_BUNDLE_IDENTIFIER
- это переменная в файле project.pbxproj. Измените это на все, что хотите, и оно будет отображаться как в вашем Info.plist, так и в настройках проекта.
ответ udit правильный. Наилучшей практикой является значение идентификатора пакета Bistle plist как $PRODUCT_BUNDLE_IDENTIFIER. Затем в настройках сборки используйте различные конфигурации (Debug, Release.etc), чтобы настроить различный идентификатор пакета:
Вам не нужен плагин xCode для изменения идентификатора пакета, но вам нужно указать там конфигурацию.
Обратитесь к для простого решения для замены $PRODUCT_BUNDLE_IDENTIFIER с помощью команды оболочки, например -
sed -i '' 's/com.example.oldbundleid/com.example.newbundleid/g' project.pbxproj
Вы можете передать свои переменные, используя Jenkins/Shell.
Альтернативный подход для этого заключается в использовании mod-pbxproj.
python -m mod_pbxproj -b -af PRODUCT_BUNDLE_IDENTIFIER=com.example.newbundleid -rf PRODUCT_BUNDLE_IDENTIFIER=com.example.oldbundleid project.pbxproj All
//редактировать
Старый идентификатор связки можно получить с помощью
awk -F '=' '/PRODUCT_BUNDLE_IDENTIFIER/ {print $2; exit}' project.pbxproj
Это можно сохранить в строковой переменной и использовать вместо com.example.oldbundleid
Для xcode 8.x
Изменение имени приложения в разделе Цели > your_app_name - Info > добавление нового ключа свойства не вносит полного изменения имени приложения во всем проекте.
Когда вы это делаете, ваш проект выполняется гладко в вашем Mac (т.е. в системе, в которой вы использовали эти изменения, так как все ваши ключи и идентификаторы свойств будут сохранены в вашей системе). Когда вы пытаетесь использовать свой проект в другой системе, вы получите эту странную ошибку, которую не хватает вашему проекту, если вы используете ваши проекты в своем проекте.
Итак, чтобы преодолеть это, вы должны внести некоторые изменения в настройки сборки, оставив вкладку "Общие" и вкладку "Информация" нетронутой.
В разделе Цели > Настройки сборки выделите Упаковка.
Измените имя Имя продукта на нужное имя и Идентификатор продукта на новый. Как только вы это сделаете, автоматически имя вашего проекта и идентификатор пакета будут изменены на новый на вкладке "Общие".