jestem wklejając mój ostatni post od wstępnych dyskusji tutaj:Podpisywanie błędów za pomocą use_frameworks! provisioning i unikalne profile
https://github.com/CocoaPods/CocoaPods/issues/4331
Ten problem ma już prawie rok, a nadal nie znalazł właściwego rozwiązania.
Kiedy budynek:
Code Sign error: Provisioning profile does not match bundle identifier: The provisioning profile specified in your build settings (“MyDistributionProfileName”) has an AppID of “com.myorg.myapp” which does not match your bundle identifier “org.cocoapods.PureLayout”.
Uwaga! PureLayout dodaje do mojego strąka jako zależność używając (w mypod.podspec pliku): s.dependency 'PureLayout', '3.0.2'
To jest cały plik podspec mojego Pod:
Pod::Spec.new do |s|
s.name = 'MyPod'
s.version = '1.2.34'
s.license = { :type => "MIT", :file => "LICENSE" }
s.homepage = 'https-:-//bitbucket.org/XXXX123/my-pod'
s.authors = { "AuthorName" => "[email protected]" }
s.summary = 'This isa a cocoa pod that contains the MY framework.'
s.source = { :git => "https-:-//bitbucket.org/XXXX123/my-pod", :tag => "#{s.version}" }
s.ios.deployment_target = '8.0'
s.source_files = 'MyPod/**/*.{swift,h}'
s.resource = 'MyPod/*'
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO', 'ONLY_ACTIVE_ARCH' => 'NO'}
s.dependency 'PureLayout', '3.0.2'
end
Uwagi:
Korzystanie z CocoaPods nie jest możliwe.
Używanie @DimaVartanian poprawkę prowadzi do podobnych błędów jak napotkanych przez @mgrebenets
ERROR ITMS-90035 nieprawidłowy podpis. Obiekt kodu nie jest w ogóle podpisany. Upewnij się, że podpisałeś swoją aplikację certyfikatem dystrybucji, a nie certyfikatem ad hoc lub certyfikatem programistycznym. Sprawdź, czy ustawienia podpisywania kodu w Xcode są prawidłowe na poziomie docelowym (które zastępują wszelkie wartości na poziomie projektu). Dodatkowo upewnij się, że przesyłany pakiet został zbudowany przy użyciu celu Release w Xcode, a nie celu symulatora. Jeśli masz pewność, że ustawienia podpisywania kodu są poprawne, wybierz "Wyczyść wszystko" w Xcode, usuń katalog "kompilacji" w Finderze i odbuduj cel wydania. Aby uzyskać więcej informacji, należy skonsultować https -: - // developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html”
ERROR ITMS-90171 Nieprawidłowy Bundle Structure - Plik binarny "XApp.app/Frameworks/X.framework/XView.o" jest niedozwolony Twoja aplikacja nie może zawierać autonomicznych plików wykonywalnych lub bibliotek innych niż CFBundleExecutable z obsługiwanych pakietów.Zobacz Przewodnik programowania pakietu na stronie https- : -. // developer.apple.com/go/?id=bundle-structure informacji na temat struktury wiązki app iOS
Mój projekt wykorzystuje również PushNotifications więc nie można użyć dowolnego wieloznaczny provisi na profilach.
Oto mój wiersz siłowni do budowy build
gym --clean --scheme ${XCODE_PROJECT_TARGET_NAME} --configuration Release --include_bitcode false --archive_path ${BUILDS_DIR}${PACKAGE_NAME}.xcarchive --output_directory $BUILDS_DIR --output_name "${PACKAGE_NAME}.ipa" --xcargs PROVISIONING_PROFILE=$APP_PROVISION_UUID
Linia ta działa bez żadnych błędów podczas @DimaVartanian poprawka jest stosowany, ale jak powyżej, prowadzi do ERROR ITMS-90035 i ERROR ITMS -90171 podczas procesu przesyłania.
Oto moja linia pilotażowa przesyłając build:
pilot upload --skip_submission --username ${APPLE_ID_USERNAME} --team_id ${APPLE_ITUNES_CONNECT_TEAM_ID} --verbose --ipa ${BUILDS_DIR}${PACKAGE_NAME}.ipa --skip_waiting_for_build_processing true
Mogę również potwierdzić, że ten sam problem istnieje wówczas, gdy budowa/archiwum/upload używając Xcode.
Dodanie tego
--export_options "ExportOptions.plist"
do linii poleceń siłowni, nie miało żadnego znaczenia. Również nie udało się spróbować przez xcargs--xcargs "PROVISIONING_PROFILE=$APP_PROVISION_UUID exportOptionsPlist=$EXPORT_OPTIONS_PLIST"
.zawartość pliku jest następująca:
<?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>teamID</key> <string>TEAMID123</string> <key>uploadSymbols</key> <string>NO</string> <key>compileBitcode</key> <false/> <key>uploadBitcode</key> <false/> <key>method</key> <string>app-store</string> </dict> </plist>
Mam nadzieję, że zespół CocoaPods będzie naprawić szybko.
Aby powiedzieć w skrócie - co nie jest koniec następującej kolejności:
- Utwórz projekt bazowy w Objectvie-C lub wziąć byle utrzymany Objective-C projekt
- tworzenia i wdrażania ram (Cocoa Touch ramowa) projekt Swift
- Tworzenie podspec dla tych ram i przesłać go do przechowalni
- Dołącz tych ram do projektu bazowego korzystając CocoaPods
- zbudować i uruchomić aplikację na symulatorze i na urządzenia przewodowego jest OK (wszystko działa zgodnie z oczekiwaniami)
- budowy i/lub przesłać do iTunesConnect nie jest ok, to nie!
Postaram się dodać przykładowy projekt później, aby przedstawić wersję demonstracyjną.
Czy próbowałeś przekazać -exportOptionsPlist do xcodebuild podczas budowania aplikacji i wewnątrz tej metody zestawu plist: app-store? Zobacz moją odpowiedź w wątku CocoaPods, o której mowa w pytaniu – tgebarowski
Próbowałem przekazać exportOtionsPlist. Nie powiodło się. Nie ma żadnego lepszego efektu. Zaktualizowany post ze szczegółami. –
btw! Te klucze w pliku ExportOptions.plist wydają się mieć sens jedynie dla procesu przesyłania, a nie dla procesu budowania, więc brzmi to tak, jakby miało sens, dlaczego nie miało to żadnego wpływu. –