distribuera cocoa app

Tråden skapades och har fått 15 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Ulricehamn
  • 2006-03-15 17:22

Sitter och skojar med Hillegass bok vilken jag finner riktigt bra. Vad jag funderar över dock är hur man distribuerar sin applikation? Om jag nu gör en fjantig liten "helloWorld" liknande app så är det ju roligt att skicka den för att irritera kollegor i mac universa.
problemet är att det inte händer ngt när de dubbelklickar på mina så filer som "Build & Run" i Xcode genererar.

Vad är det man skall göra mer?

Man ska inte behöva göra mer än så. För säkerhets skull, ser filen du skickar dem ut så här?

  • Medlem
  • Ulricehamn
  • 2006-03-15 18:29

Jajamen, det är den jag drar väg?
Spelar det ngn roll att jag kompilerar i xcode på panther och han kör på tigern? (Det brukar ju fungera åt det hållet...??)

Försökte exekvera i teminalen för att om möjligt fånga felmeddelanden men då är det visst en mapp .. ingen binärfil

Ursprungligen av elwiz:

Jajamen, det är den jag drar väg?
Spelar det ngn roll att jag kompilerar i xcode på panther och han kör på tigern? (Det brukar ju fungera åt det hållet...??)

Nej, det ska inte göra någon skillnad.

Ursprungligen av elwiz:

Försökte exekvera i teminalen för att om möjligt fånga felmeddelanden men då är det visst en mapp .. ingen binärfil

Ja. Längre in i mappstrukturen finns en binärfil. Dessutom finns de resurser som programmet använder. T ex grafik, ljud och nib-filer.

  • Medlem
  • Simrishamn
  • 2006-03-15 18:44

Felet beror förmodligen på att du har kompilerat som Debug, du ska kompilera som Release. Debug-kompilerade app kan bara köras på din dator.

Project -> Set Active Build Configuration -> Release

  • Medlem
  • Ulricehamn
  • 2006-03-15 19:03
Ursprungligen av HannesP:

Felet beror förmodligen på att du har kompilerat som Debug, du ska kompilera som Release. Debug-kompilerade app kan bara köras på din dator.

Project -> Set Active Build Configuration -> Release

Hittade den inte först, kör äldre Xcode men via "Detailed BuildReults" fann jag "Deployment" istället för "Debug"? gissar att det är samma sak?

Jag lär snart bli varse, stort tack!!

Senast redigerat 2006-03-15 19:24
  • Medlem
  • Ulricehamn
  • 2006-03-15 18:45

Minsann ja.. jag som är van vid att bara köra gcc eller javac direkt på filen, där fick jag för den.

Stort tack, skall be kollegorna köra binären istället och se vad vi får för output.

Ursprungligen av elwiz:

Stort tack, skall be kollegorna köra binären istället och se vad vi får för output.

Normalt startar bara programmet som vanligt då. Du måste kompilera om med inställningarna från HannesP.

  • Medlem
  • Simrishamn
  • 2006-03-15 19:50

Yep, Deployment är gamla namnet på Release.
No problems!

Det går att köra program byggda i Debug-läge utanför XCode om man har stängt av ZeroLink.

En annan fallgrop i XCode, fast ungefär tvärtom, är ju att om man kompilerar med build configuration 'Release' så kommer inte debug-symboler med. Det är väntat. Vad som inte är väntat är att man fortfarande kan sätta brytpunkter, dra igång debuggern och köra på; det enda som händer är att programmet inte stannar vid brytpunkterna. Tog mig lång tid att lista ut första gången det hände! :rolleyes:

  • Medlem
  • Simrishamn
  • 2006-03-15 21:24

Haha.
Det ska jag tänka på om det inte vill sig. Tack.

  • Medlem
  • Ulricehamn
  • 2006-03-16 07:30

Det var en massa små bra tips, jag är mest van vid vim + kompilator i terminalen. Men det här skall nog gå fint, mina kollegor fick i alla fall njuta av mina estetiska Cocoa program igår, stort tack!!

  • Medlem
  • Mölndal
  • 2006-03-16 09:04

Det finns ju ett kommando som heter "xcodebuild" som du kan köra direkt i terminalen och ange target och konfiguration direkt.

Förresten så är frågan aningen felställd. Den borde vara "distribuera Mach-O-app" (eller tillämpning). Cocoa och Carbon är API'er, CFM och Mach-O är binärformaten, och det är binärformaten som kan stöka till det. En CFM-tillämpning är bara en fil medan en Mach-O-tillämpning är en mappstruktur. Båda är sårbara men på olika sätt. Gissa vad som händer om man får lite filnamn pajade på vägen. En CFM-tillämpning tenderar att antingen vara hel eller förstörd (om resursfilen är raderad) medan en Mach-O kan ha enstaka delfiler som tappas bort.

Det är naturligtvis så att man ska distribuera icke-debug-versionen. Lämpligtvis packar man den med zip. Stuffit eller som komprimerad skivavbildning.

  • Medlem
  • Simrishamn
  • 2006-03-16 17:22

Ingemar, är Mach-O verkligen bara en mappstruktur? Höll för ett tag sedan lite på att disassembla lite grejer, och stötte då på t.ex. de olika segmentet (text etc) för en Mach-O-binär. Har inte det i allafall också med saken att göra?

Mach-O är en binärfil, en bundle är en mappstruktur som bland annat innehåller en Mach-O-binär. Ingemar syftar på en bundle, som är den vanligaste modellen för Cocoaapplikationer.

1
Bevaka tråden