Скрипт для удаления конфигураций и схем сборки из файла xcodeproj? - PullRequest
0 голосов
/ 27 февраля 2019

Есть ли способ удалить конфиги и схемы сборки из xcodeproj через скрипт / командную строку без редактирования (project.pbxproj) в текстовом редакторе, надеясь, что он не будет перепроверять и влиять на сборку.

Я попытался xcodeproj, который позволяет вам читать и представлять prj как yaml, я хочу один, где я могу редактировать yaml и генерировать из него xcodeproj.

Также я попытался удалить форму схем xcshareddata все еще без улучшения производительности.

shell> xcodebuild -project myproject.xcodeproj -list

# output
Information about project "myproject":
    Targets:
        myproject
        myprojectTests
        ScreensForManPages
        UITestsCA
        ....
        ....
        UITestsUS

    Build Configurations:
        ae-debug
        ae-debug-another-condition
        ae-release
        ae-release-another-condition
        ...
        ...
        250+ build config in between
        ...
        ...
        zw-debug
        zw-debug-another-condition
        zw-release
        zw-release-another-condition

    If no build configuration is specified and -scheme is not passed then "ae-release-another-condition" is used.

    Schemes:
        myproject-ae-debug
        myproject-ae-debug-another-condition
        myproject-ae-release
        ...
        ...
        250+ schemes in between
        ...
        ...
        myproject-zw-debug
        myproject-zw-debug-another-condition
        myproject-zw-release
        myproject-zw-release-another-condition

Причина:

Недавно я унаследовал проект, в котором имеется 250+ конфигураций сборки и 250+ схем.К сожалению, моя рабочая машина - старый добрый mbp с hdd, на котором запущен osx mojave с xcode 10, и он не может открыть проект.(Размер файла .xcodeproj составляет около 10 МБ)

Я могу открыть проект, но при каждом щелчке радуги появляется более 10 минут, чтобы отобразить цель, и я не знаю, какая опция в xcode удаляет несколькоКонфигурация / схемы сразу.

PS:

Решение Apple для сценариев не помогает xcode не отвечает своевременно

1 Ответ

0 голосов
/ 27 февраля 2019

ДО НАЧАЛА

  • Xcode необходимо полностью закрыть .
  • Если вы собираетесь вручную отредактировать свой Xcode проект ОБЯЗАТЕЛЬНО , сделайте резервную копию, прежде чем пытаться это сделать!

Схемы :

Удалите файлы схем, из которых вы не хотите:

/MyApp/MyApp.xcodeproj/xcshareddata/xcschemes

Отредактируйте список управления :

/MyApp/MyApp.xcodeproj/xcuserdata/Username.xcuserdatad/xcschemes/xcschememanagement.plist

Внутри файла удалите нежелательные схемы (например, MyApp Custom):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>SchemeUserState</key>
    <dict>
        ///////////////////////////////////////////////// remove start
        <key>MyApp Custom.xcscheme_^#shared#^_</key>
        <dict>
            <key>orderHint</key>
            <integer>1</integer>
        </dict>
        ///////////////////////////////////////////////// remove end
        <key>MyApp.xcscheme_^#shared#^_</key>
        <dict>
            <key>orderHint</key>
            <integer>0</integer>
        </dict>
    </dict>
    <key>SuppressBuildableAutocreation</key>
    <dict>
        <key>AFDACD5A2209867B00004213</key>
        <dict>
            <key>primary</key>
            <true/>
        </dict>
    </dict>
</dict>
</plist>

Конфигурации сборки :

/MyApp/SomeProgram.xcodeproj/project.pbxproj

Я не рекомендую вручную редактировать этот файл, а скорее удалите конфигурации сборки через Xcode, однако, если вы смелы в этом файле, вы увидите конфигурации.Вы также можете отредактировать этот файл с помощью редактора plist (plistbuddy и т. Д.) - удалите ненужные:

AFADF25C22269ABE000D354D =         {
            buildSettings =             {
     ...
         };
     isa = XCBuildConfiguration;
     name = Custom;
};

Вы также увидите соответствующий UID, сгруппированный с другими конфигурациями:

AFDACD542209865600004213 =         {
            buildConfigurations =             (
                AFDACD552209865600004213,
                AFDACD562209865600004213,
                AFADF25C22269ABE000D354D ////// remove
            );
            defaultConfigurationIsVisible = 0;
            defaultConfigurationName = Release;
            isa = XCConfigurationList;
        };

Теперь, когда вы откроете .xcodeproj, изменения должны быть отражены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...