2013-03-26 15 views
15

Mój klient ma aplikację na iOS z zakupem w aplikacji, zestawem gier i powiadomieniami push, włączona w sklepie z aplikacjami. Chciałbym zrezygnować z aplikacji przy użyciu wewnętrznego certyfikatu dystrybucji dla przedsiębiorstw, aby przetestować wewnętrznie, ale nadal móc przetestować usługi związane z pierwotnym profilem udostępniania. czy to możliwe?Rezygnacja profilu zaopatrzeniowego iOS

Odpowiedz

29

skończyło się robić to, co jest połączeniem: -

i

1) Tworzenie uprawnień plist, zapobiegać problemom z pęku kluczy itp

<?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>GBA9L2EABG.com.your.bundle.id.MyApp</string> 
    <key>get-task-allow</key> 
    <false/> 
</dict> 

2) Rozpakuj IPA

unzip Application.ipa 

3) Wyjąć starą Kod sygnatury

rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true 

4) Wymień wbudowany mobilny zaopatrzenie profil

cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision" 

5) Resign

/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/Application.app" 

6) Re-pakiet

zip -qr "Application.resigned.ipa" Payload 
+0

jedna komenda może to zrobić, jeśli zrezygnuje plik .app: 'xcrun -sdk iPhoneOS PackageApplication -v "Build/YourProject-iPhoneOS/youAppName.app" -o„output_folder/yourAppName.ipa "--sign" yourCertificateName "--embed" your.mobileprovision "' – Xiao

+0

"GBA9L2EABG.com.your.bundle.id.MyApp" - czy jest to tylko identyfikator pakunku, który utworzyłeś, czy jest to oryginał? IPA? Czy powiadomienia push działają również po zmianie identyfikatora pakunku oryginalnej aplikacji? – Leonti

+0

Gdy próbuję zainstalować aplikację otrzymującą błąd jako CFBundleExecutable z appName, która nie jest wykonywalna. Próbowałem polecenia chmod + x do appName.app nadal ten sam błąd. – Raghav

1

Wystarczy dodać trochę do odpowiedzi Koko Carla, jeżeli napotkasz problemy z codesign_allocate kiedy dojdziesz do punktu 5 (Rezygnacja), spróbuj wyeksportować zmienną powłoki CODESIGN_ALLOCATE i nadać jej ścieżkę do przydziału kodów w iPhone SDK. Aby to zrobić, upewnij się, że masz narzędzia wiersza poleceń Xcode zainstalowany (Preferences/aktualizacje w Xcode)

Na przykład, byłem coraz błąd:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

wyjściowa:

Payload/MyApp.app: replacing existing signature 
codesign_allocate: object: /Users/mimio/Downloads/Payload/MyApp.app/MyApp malformed object (unknown load command 33) 
Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable 

aby rozwiązać ten problem, to ustawienie zmiennej wygląda następująco:

me$ export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 

A potem znowu prowadził moją komendę:

me$ /usr/bin/codesign -f -v -s "iPhone Distribution: Some Company, Inc" --resource-rules "Payload/MyApp.app/ResourceRules.plist" --entitlements Entitlements.plist "Payload/MyApp.app" 

I voila! Wszystko działało poprawnie z nowym codeign_allocate

4

Aby zrezygnować z aplikacji nieco łatwiejszej niż to, co powiedział @Koko Carl, dostosowaliśmy skrypt floatsign, który można znaleźć pod adresem https://gist.github.com/Weptun/5406993. sprawia, że ​​proces bardzo proste:

sh floatsign.sh ~/Downloads/File.ipa "iPhone Distribution: CertificateName" -b new.bundle.id -p /Path/To/Profile/Appstore.mobileprovision App-resigned.ipa 
+0

Ostrzeżenie: - reguły resourcingu zostały wycofane w systemie Mac OS X> = 10.10! temp/Payload/Application.app/ResourceRules.plist: nie można odczytać zasobów Wystąpił błąd, przerwano działanie! –

1

Kiedy przeszukiwane jest to pierwsze pytanie shownup przepływu stackover. Tak więc chciałem zaktualizować najnowszą aplikację iResign, która bardzo ułatwia pracę z GUI zamiast poleceń w terminalu.

iReSign

iReSign pozwala wiązki iDevice aplikacji (.ipa) pliki mają być podpisane lub zrezygnował z certyfikatem cyfrowym firmy Apple w celu dystrybucji. Może także tworzyć podpisane pliki aplikacji iDevice (.ipa) z plików .xcarchive. To narzędzie jest przeznaczone dla użytkowników przedsiębiorstw, w przypadku wdrażania w przedsiębiorstwie, gdy osoba podpisująca aplikację jest inna niż osoba (osoby) tworzące aplikację.

Jak korzystać

iReSign pozwala ponownie podpisać żadnej niezaszyfrowane IPA plik z dowolnego certyfikatu, którego masz odpowiedni klucz prywatny. iResign może również utworzyć podpisany plik ipa z pliku xcarchive.

Przeciągnij niepodpisany plik .ipa lub .xcarchive do górnego pola lub użyj przycisku przeglądania.

Wprowadź pełną nazwę certyfikatu z paska dostępu do kluczy, na przykład "iPhone Developer: Firstname Lastname (XXXXXXXXXX)" w dolnym polu.

Kliknij przycisk Wyślij ponownie! i czekaj. Zrezygnowany plik zostanie zapisany w tym samym folderze, co oryginalny plik.

Źródło: https://github.com/maciekish/iReSign

+2

Masz tę samą odpowiedź na 4 różne pytania. Jeśli odpowiedź na to pytanie jest taka sama, powinieneś oznaczyć ją jako duplikat, a nie duplikować odpowiedzi. – NathanOliver

+0

Idealny do ponownego podpisania wiadomości ipa wysłanej do AppStore. Wystarczy znaleźć odpowiednie profile i certyfikat (jeśli masz więcej niż jeden). Zostawiłem pusty plik authorized.list, wydaje się, że utworzyłbym tempo, jeśli go nie znalazłem. Następnie zainstalowałem mój zrezygnowany program ipa za pomocą programu iMazing. Teraz mogę dwukrotnie sprawdzić, czy moja przesłana aplikacja działa zgodnie z oczekiwaniami, zanim dotrze do sklepu i/lub czeka na zatwierdzenie. –

Powiązane problemy