Hvordan løser man iOS Application Code Signing Error?

Jeg forsøgte at løse dette problem, der var et mareridt for mig i hele sidste uge, og løste det i slutningen af den lange bestræbelse. Det var ikke en almindelig løsning.

Har du virkelig brug for at denne artikel til fastsættelse?
Måske.

For under undersøgelsen har jeg læst for mange fora (herunder kinesiske. men ikke læse, kun se :))), artikler, StackOverflow-indlæg osv. men ingen af dem kunne hjælpe mig. Derfor ønsker jeg at oprette en rettelseskompilering til dette problem.

Vor starten kan du finde mit scenarie i følgende.

Jeg har en Cordova-applikation og genererer et build via Cordova CLI. Men generelt er dette ikke anderledes end den native ios applikations build. Faktisk fungerede det korrekt indtil MacOS- og XCode-opdateringerne.

Efter Mojave- og XCode 10-opdateringerne kan jeg ikke generere et build på Jenkins. I følgende fejl blev vist løbende. Dette er nøglering og certifikat afhængige problem præcis.

..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

Vi kan begynde at løsninger. Du bør vide, at disse fælles løsninger er i begyndelsen af listen.

Fælles løsning 1: Kontroller gyldigt certifikat

Du bør kontrollere nøgleringen til det gyldige certifikat er tilføjet korrekt. Du kan gøre det via appen Keychain Access eller følgende kommando via terminal.

security find-identity -vp codesigning

Dit certifikat skal være i resultatet. Hvis ikke, skal du fjerne og tilføje dit certifikat til nøglering igen.

Fælles løsning 2: Lås og lås nøglering op

En anden mest almindelige løsning herinde. Kør følgende kommandoer i terminalen. Du skal tilføje dit eget nøglerækkenavn og adgangskode.

security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain

I dette tilfælde skal du bruge nøglerækkenavnet er “temp” og adgangskoden er “p@ssw0rd”. Du kan også finde nøgleringens fulde sti i følgende kommando, og den kan bruges i stedet for nøgleringsnavnet (temp).

security list-keychains

Almindelig løsning 3: Genstart maskinen

Det kan ses som sjovt, men denne løsning højt upvoted på de fleste websites. Hvis du tilføjer det nye certifikat, kan det være nyttigt at genstarte maskinen. Du kan bruge følgende kommando til at genstarte.

sudo reboot

Almindelig løsning 4: Indstil nøgleringskode til partitionsliste

Denne løsning løser problemer med adgangskodeprompter. I nogle tilfælde venter codesign på keychain-adgangskoden fra prompten, men fjernadgang har ikke denne funktion. Derfor afsluttes codesigneringsprocessen generelt uden held.

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db

Du kan finde nøgleringens fulde sti med den metode, der blev beskrevet i “Fælles løsning 1”.

Løsningen i min sag: Check and Remove Duplicated Private Keys

I mit tilfælde havde temp keychain et gyldigt certifikat og dets private nøgle. Jeg ved ikke hvorfor, men “System” keychain havde en privat nøgle, der relaterede til mit gyldige certifikat. Jeg har kontrolleret alle private nøgler i alle nøglebundter og fjernet alle duplikerede nøgler fra irrelevante nøglebundter. Jeg har også fjernet alle udløbne certifikater, hvis nogen.

Jeg gætter på, at disse dubletter blev vist på grund af Mojave-opdatering, men jeg ved virkelig ikke hvorfor.

Konklusion 🙂