У меня есть идея, согласно которой я хочу создать свое приложение один раз на нашем сервере сборки и распространить его в нескольких средах, прежде чем, наконец, попасть в магазин iTunes.
Одна из проблем, с которыми я сталкиваюсь, — это права. Если я скопирую права $ENVIRONMENT.plist
в приложение и повторно подпишусь с ним, приложение установится и будет работать должным образом на 64-битном устройстве. Проблема, с которой я столкнулся, заключается в том, что приложение не работает на 32-битном устройстве (ARMv7/ARMv7S), и, поскольку оно изначально было создано для Ad-Hoc (HockeyApp), оно не имеет разрешений на бета-тестирование.
По сути, у меня есть разные файлы plist для разных сред.
dev.plist
<?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>application-identifier</key>
<string>XXXXX.com.mydomain.mobile</string>
<key>keychain-access-groups</key>
<array>
<string>XXXXX.com.mydomain.mobile</string>
</array>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
prod.plist
<?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>application-identifier</key>
<string>XXXXX.com.mydomain.mobile</string>
<key>keychain-access-groups</key>
<array>
<string>XXXXX.com.mydomain.mobile</string>
</array>
<key>get-task-allow</key>
<false/>
<key>beta-reports-active</key>
<true/>
</dict>
</plist>
Затем я копирую файлы plist во время развертывания и пытаюсь повторно подписать
cp $ENVIRONMENT.plist "${APPFOLDER}/Entitlements.plist"
/usr/bin/codesign -f -v -v -s "$CERTIFICATE_NAME" --entitlements="${APPFOLDER}/entitlements.plist" "${APPFOLDER}/Payload/$APPNAME.app"
pushd ${APPFOLDER}
zip -qr ~/Desktop/Archive/$ENVIRONMENT_NAME/$APPNAME-$APP_VERSION.ipa Payload
popd
Когда я использую этот подход, я могу запустить приложение на iPhone 6+ без проблем, но когда я пытаюсь запустить приложение на iPhone 4S или iPhone 5, я получаю сбой при запуске без каких-либо журналов сбоев.
Как правильно повторно подписать приложение с разными правами для разных сред? Опять же, сбой происходит только на 32-битных устройствах, 64-битные работают, как и ожидалось, даже после отставки.
РЕДАКТИРОВАТЬ:
Если я просто создам приложение с помощью Visual Studio и не буду распаковывать/обновлять/уходить в отставку, то приложение будет работать должным образом на всех платформах.
РЕДАКТИРОВАТЬ:
Вот единственный вывод ошибки, который я могу получить. Это из консоли устройства XCode.
Jul 7 11:01:02 Company-iPhone-4S SpringBoard[48] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
Jul 7 11:01:02 Company-iPhone-4S SpringBoard[48] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
Jul 7 11:01:02 Company-iPhone-4S SpringBoard[48] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
Jul 7 11:01:02 Company-iPhone-4S securityd[86] <Error>: secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Jul 7 11:01:02 Company-iPhone-4S securityd[86] <Error>: secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Jul 7 11:01:02 Company-iPhone-4S amfid[312] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
Jul 7 11:01:02 Company-iPhone-4S securityd[86] <Error>: secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Jul 7 11:01:02 Company-iPhone-4S securityd[86] <Error>: secTaskDiagnoseEntitlements MISSING keychain entitlements: no stored taskRef found
Jul 7 11:01:02 Company-iPhone-4S amfid[312] <Error>: SecTrustEvaluate [leaf IssuerCommonName SubjectCommonName]
Jul 7 11:01:02 Company-iPhone-4S kernel[0] <Notice>: xpcproxy[359] Container: /private/var/mobile/Containers/Data/Application/877013A4-BF2A-4AC9-8CEA-1598EA2CD336 (sandbox)
Jul 7 11:01:02 Company-iPhone-4S com.apple.xpc.launchd[1] <Error>: assertion failed: 13F69: launchd + 85529 [083E000D-4C31-3B98-A2C4-6FADB4D1940F]: 0x3
Jul 7 11:01:02 Company-iPhone-4S MyCompMyAppMobileiOS[359] <Warning>: Found new TLS offset at 176
Jul 7 11:01:02 Company-iPhone-4S MyCompMyAppMobileiOS[359] <Warning>: The assembly mscorlib.dll was not found or could not be loaded.
Jul 7 11:01:02 Company-iPhone-4S MyCompMyAppMobileiOS[359] <Warning>: It should have been installed in the `/Users/builder/data/lanes/3412/3cf8aaed/source/maccore/builds/install/target7/lib/mono/2.1/mscorlib.dll' directory.
Jul 7 11:01:02 Company-iPhone-4S com.apple.xpc.launchd[1] (UIKitApplication:com.MyComp.mobile[0x3eca][359]) <Warning>: Service exited with abnormal code: 1
Jul 7 11:01:02 Company-iPhone-4S SpringBoard[48] <Warning>: Application 'UIKitApplication:com.MyComp.mobile[0x3eca]' exited voluntarily.
Jul 7 11:01:03 Company-iPhone-4S kernel[0] <Notice>: xpcproxy[360] Container: /private/var/mobile/Containers/Data/Application/877013A4-BF2A-4AC9-8CEA-1598EA2CD336 (sandbox)
Jul 7 11:01:03 Company-iPhone-4S com.apple.xpc.launchd[1] <Error>: assertion failed: 13F69: launchd + 85529 [083E000D-4C31-3B98-A2C4-6FADB4D1940F]: 0x3
Jul 7 11:01:03 Company-iPhone-4S MyCompMyAppMobileiOS[360] <Warning>: Found new TLS offset at 176
Jul 7 11:01:03 Company-iPhone-4S MyCompMyAppMobileiOS[360] <Warning>: The assembly mscorlib.dll was not found or could not be loaded.
Jul 7 11:01:03 Company-iPhone-4S MyCompMyAppMobileiOS[360] <Warning>: It should have been installed in the `/Users/builder/data/lanes/3412/3cf8aaed/source/maccore/builds/install/target7/lib/mono/2.1/mscorlib.dll' directory.
Jul 7 11:01:03 Company-iPhone-4S com.apple.xpc.launchd[1] (UIKitApplication:com.MyComp.mobile[0xc803][360]) <Warning>: Service exited with abnormal code: 1
Jul 7 11:01:03 Company-iPhone-4S SpringBoard[48] <Warning>: Application 'UIKitApplication:com.MyComp.mobile[0xc803]' exited voluntarily.
примечание: я повторно создал свой профиль распространения, чтобы в нем были бета-версии, и я использую вздыхает, чтобы получить последнюю копию моих профилей подготовки.
примечание. Причина отказа заключается в том, что у меня есть некоторая конфигурация XML, которая указывает приложению разные серверы для каждой среды (разработки, тестирования, производства), и она обновляется перед отказом.
Copy-Item "$here\entitlements\$environment.plist" "$here\$($this.ipaName)\entitlements.plist"
- person Chase Florell   schedule 07.07.2016