Я установил iOS 4.1, только что выпущенную сегодня.
Я загрузил свое приложение на телефон из AppStore и запустил, и оно не может получить местоположение GPS.
Я загружаю новый XCode и 4.1 SDK и перекомпилирую под 4.1, и приложение отлично работает на iPhone 4.1.
Код не был изменен.
Почему приложение, скомпилированное под 4.0, не работает под 4.1.
BASE SDK был 4.0
ЦЕЛЬ IOS РАЗВЕРТЫВАНИЯ: iOS 4.0
НОВЫЕ настройки
BASE SDK составил 4,1
ЦЕЛЬ IOS РАЗВЕРТЫВАНИЯ: iOS 4.0
Немного досадно, мне нужно повторно подать заявку, хотя я ничего не менял ... еще одна неделя подачи заявки в черную дыру!
После 3 попыток развертывания в App Store и большого разбора файла проекта я обнаружил следующее:
Цель развертывания отличалась для BUILD и TARGET
А базовый sdk устанавливается только в Debug в Target
Я получил Debug / Release для работы на моем телефоне, поэтому предполагалось, что в приложениях Releaselase и Distribution одинаковые настройки должны работать в App Store.
Но даже после его установки и повторного развертывания в магазине приложений он не работал (приложение загружено и нет GPS).
Я попытался удалить профиль обеспечения, но не сработал.
Ночью телефон потерял питание, и при перезапуске приложение работало.
, поэтому не уверен, что это была странная комбинация всех 3.
iOs Deployment Target (IPHONEOS_DEPLOYMENT_TARGET = 4.0;): iOS 4.0
BASE SDK(SDKROOT = iphoneos4.1;): iOS 4.1
for BUILD (Debug/Release/Distribution) (Right click on top level in tree YourApp >> Info menu)
and TARGET (Debug/Release/Distribution) (Right click on Target >> YourApp >> Info menu)
Выпустите приложение на 4.0 в магазин приложений.
4.1 выпущен
Обновил мое приложение, чтобы проверить это.
Приложение работает нормально, но не может получить GPS на нескольких экранах.
Перекомпилировал его под 4.1, НЕТ ИЗМЕНЕНИЙ КОДА, выпущенный для хранения, все равно не будет работать.
Отладочная версия работала нормально на 4.1
Релиз не
Версии дистрибутива (версия из магазина приложений) нет. Не удалось получить GPS.
Отрезал файл проекта, чтобы увидеть, в чем разница.
Обнаружил, что
Настройки Target и Build были не идентичны.
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
Был установлен для BUILD для отладки / выпуска и распространения
но
для TARGET для DEBUG было установлено значение
IPHONEOS_DEPLOYMENT_TARGET = 3,0;
и НЕ устанавливается в RELEASE и DEBUG
Я удалил каталог сборки и установил
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
for BUILD (Debug/Release/Distribution) (Right click on top level in tree YourApp >> Info menu)
and TARGET (Debug/Release/Distribution) (Right click on Target >> YourApp >> Info menu)
Rebuilt
Релизная версия теперь работает, поэтому надо было надеяться, что настройка в Distribution будет работать.
Выпущен в магазин приложений. Был одобрен через 2 дня оба раза.
Попробовал это. Приложение работает, но нет GPS.
Пытался удалить профиль инициализации, не повезло.
Ночью телефон потерял питание, так что перезагрузил
Попробовал приложение и все заработало.
Так что, может быть,
Чтобы проверить это самостоятельно.
Скопируйте YourApp.xcodeproj в безопасное место.
Переименовать так расширение больше не .xcodeproj
Это становится папкой.
Откройте и он будет иметь 3 файла
Настройки сборки находятся в project.pbxproj
Прокрутите вниз:
Ищу
/ * Начать раздел XCConfigurationList * /
Обратите внимание на два раздела для сборки и один для цели
/* Build configuration list for PBXNativeTarget
...
/* Build configuration list for PBXProject
Если вы выполнили сборку дистрибутива, каждая из них будет иметь настройки Debug / Release и Distribution
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
C55BCF5811ADCA470050ABDB /* Distribution */,
24-значный шестнадцатеричный номер указывает на раздел вверх в файле.
Если вы положите 3 секции (рядом друг с другом в таблице), вы увидите различия.
только отличия
TARGET (отладка, выпуск и распространение)
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
....
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
....
};
name = Debug;
};
не задано для выпуска / распространения
BUILD (набор для отладки / выпуска / распространения)
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
SDKROOT = iphoneos4.1;