IOS симулятор: не удалось скопировать ссылку. Неверный путь в моей файловой системе? - программирование
Подтвердить что ты не робот

IOS симулятор: не удалось скопировать ссылку. Неверный путь в моей файловой системе?

Я использую Xcode Version 6.1 (6A1052d)

Я пытаюсь запустить приложение на симуляторе.

В первый раз он всегда работает нормально. Если я хочу запустить второй раз, у меня есть ошибка (см. Журнал ниже). Затем в iOS-симуляторе "Reset" Содержимое и настройки ", и я могу снова запустить его успешно.

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

ИЗМЕНИТЬ: Вот файл info.plist.xml(сгенерированный LibGDX, если это имеет значение)

<?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>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string>${app.name}</string>
    <key>CFBundleExecutable</key>
    <string>${app.executable}</string>
    <key>CFBundleIdentifier</key>
    <string>${app.id}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${app.name}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>${app.version}</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>${app.build}</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    <key>UIStatusBarHidden</key>
    <true/>
    <key>UIDeviceFamily</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
        <string>opengles-2</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <!-- <string>UIInterfaceOrientationPortrait</string> -->
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Icon</string>
                <string>Icon-72</string>
            </array>
        </dict>
    </dict>
</dict>
</plist>

И мой robovm.xml:

app.version=1.0
app.id=<my package name>.IOSLauncher
app.mainclass=<my package name>.IOSLauncher
app.executable=IOSLauncher
app.build=1
app.name=<my app name>

Я попытался более точно определить ошибку, благодаря совету Джереми, в system.log внутри папки моего виртуального устройства. System.log имеет много записей во время крушения, поэтому я, возможно, что-то пропустил... Во всяком случае, я нашел эти потенциальные ошибки:

Nov 28 09:03:44 As-MacBook-Pro installd[668]: 0x10e3d0000 createDictFromFile: open failed for /Users/<myname>/Library/Developer/CoreSimulator/Devices/D1C6E4CE-ABF3-4621-B811-913F1705CBE0/data/Containers/Bundle/Application/CA2B6D8C-1A62-4DA6-8433-AA4678D009E1/ManifestCache.plist : No such file or directory

Nov 28 09:03:44 As-MacBook-Pro installd[668]: 0x10e4d6000 writeDictToFile: ==== Successfully wrote Manifest cache to /Users/<myname>/Library/Developer/CoreSimulator/Devices/D1C6E4CE-ABF3-4621-B811-913F1705CBE0/data/Library/Caches/com.apple.mobile.installd.staging/temp.gCGKCY/extracted/ManifestCache.plist

Nov 28 09:03:44 As-MacBook-Pro installd[668]: 0x10e3d0000 validate_stream: Got manifest for version "1 1.0", but expected version "1 "

Nov 28 09:03:44 As-MacBook-Pro installd[668]: 0x10e3d0000 hardlink_copy_hierarchy: Failed to open manifest /Users/<myname>/Library/Developer/CoreSimulator/Devices/D1C6E4CE-ABF3-4621-B811-913F1705CBE0/data/Library/Caches/com.apple.mobile.installd.staging/temp.gCGKCY/extracted/com.apple.deltainstallcommands.<my app.id>

Исходный журнал сбоев с консоли Eclipse (папки имен устройств различны, поскольку я тестировал несколько виртуальных устройств, но ошибка всегда одна и та же)

11/27/14 9:58:17 AM: [ERROR] Session could not be started: 
Error Domain=LaunchServicesError 
Code=0 "Unable to run app in Simulator" UserInfo=0x7fc8eb900d70 
{Error=PackagePatchFailed, ErrorDescription=Could not hardlink copy 
/Users/<myname>/Library/Developer/CoreSimulator/Devices/055A18BC-73B5-4EA6-A872-488FA69F4750/data/Containers/Bundle/Application/CCF8C472-C48F-41D7-8885-E83830256EE3/IOSLauncher.app 
to 
/Users/<myname>/Library/Developer/CoreSimulator/Devices/055A18BC-73B5-4EA6-A872-488FA69F4750/data/Library/Caches/com.apple.mobile.installd.staging/temp.TsGEn1/extracted/Payload/IOSLauncher.app 
with manifest 
/Users/<myname>/Library/Developer/CoreSimulator/Devices/055A18BC-73B5-4EA6-A872-488FA69F4750/data/Library/Caches/com.apple.mobile.installd.staging/temp.TsGEn1/extracted/com.apple.deltainstallcommands.<pathtomyappexec>, 
NSLocalizedFailureReason=An error was encountered while running 
(Domain = LaunchServicesError, Code = 0), 
NSUnderlyingError=0x7fc8ebb1a500 "The operation couldn’t be completed. 
(LaunchServicesError error 0.)", 
NSLocalizedDescription=Unable to run app in Simulator}
4b9b3361

Ответ 1

Это действительно срабатывает по заказу определенных клавиш в файле Info.plist приложения и то, что, кажется, ошибка в симулятор IOS installd процесса. Иногда кажется, что installd не может прочитать значения CFBundleShortVersionString и CFBundleVersion. Я обнаружил, что если RoboVM всегда будет сначала перемещать эти значения в записываемом им Info.plist, мы предотвратим ошибку в installd. Теперь мы внедрили этот обходной путь в RoboVM (см. Выпуск № 771), и он будет в следующей ночной сборке (сборка 20150222) и в следующем выпуске.

Ночные сборки RoboVM можно скачать с http://download.robovm.org. Для установки ночной сборки плагина Eclipse вы должны использовать сайт обновления

http://download.robovm.org/nightlies/eclipse/site.xml

Ночные сборки SNAPSHOT из подключаемых модулей RoboVM Maven и Gradle переносятся в Maven Central.

Ответ 2

Я столкнулся с этой ошибкой, оставив поле "Сборка" пустым, используя только вкладку "Версия" на вкладке "Общие". Ошибка прошла после установки значения сборки и переустановки приложения.

Ответ 3

Я считаю, что проблема усугубляется, если вы измените свое приложение Info.plist из одной сборки в другую (например, revving CFBundleVersion или аналогичный). Если вы это сделаете, вы должны удалить приложение из симулятора между каждым запуском (либо через SpringBoard, либо с помощью simctl), либо просто стереть сим-устройство.

Эта проблема должна быть рассмотрена в недавних бета-версиях iOS Simulator 8.2, которые находятся в бета-версии Xcode 6.2. Я думаю, что это было рассмотрено либо в бета2, либо в бета3, но я не могу вспомнить наверняка.

Ответ 4

Я столкнулся с той же ошибкой, используя Xcode 8.2.1. Изменение порядка элементов в Info.plist в моем случае не помогло. Но это привело меня к решению. Я изменил и CFBundleShortVersionString, и CFBundleVersion с 3.0.0 до 3.0.1, НО Я ЗАБЫЛ, чтобы также изменить на 3.0.1 в локализованных и базовых файлах InfoPlist.strings. Это исправлено.

Ответ 5

Найдите файлы InfoPlist.strings. И проверьте, если версия "CFBundleShortVersionString" = "1.1"; совпадает с версией вашего приложения в Info.plist

InfoPlist.strings

Ответ 6

Вариант-1: 1.Goto "Общая настройка", нажав на название проекта на левой боковой панели. 2.Измените имя идентификатора Bundle на "com.release.ABC" (ABC может быть любым другим именем. Лучше заменить ABC своим именем APP) 3. Теперь запустите его и наслаждайтесь.

Вариант-2: 1. Откройте симулятор. 2. Удалите все приложения, установленные пользователем. 3. Запустите приложение и наслаждайтесь. N.B: У него есть недостаток, который каждый раз, когда вы чистите симулятор, а затем после этого, вы сможете загрузить свое приложение.

Ответ 7

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

Тогда я заметил, что если вы идете в " Project Settings → Build Phases → Embed Frameworks есть флаг " Копировать только при установке". Эта проблема ушла.

Ответ 9

Я столкнулся с этой проблемой в многоцелевом проекте. После дублирования цели я забыл изменить "Идентификатор комплекта продукта". Как только я изменил этот параметр на уникальное значение (см. Вкладку "Настройки сборки"), ошибка исчезла.

РЕДАКТИРОВАТЬ

После изменения "Идентификатора комплекта продукта" вы должны стереть все содержимое и настройки с симулятора и очистить папку сборки в Xcode (Cmd + Shift + K).

Я использую Xcode 10.1.

Ответ 10

Select Project from Navigation window -> TARGET -> General -> Build or Version

Убедитесь, что оба поля заполнены каким-то значением.