2014-06-05 11 views
47

Stworzyłem aplikację na iOS "helloworld" z cordova, używając tam documentation. Aplikacja z powodzeniem działa, gdy uruchomię cordova emulate ios. Czego nie mogę zrobić, to podczas wdrażania, gdy uruchamiam cordova build --release. Nie tworzy tam żadnych plików .ipa. Wszystko, co znajduję, to plik Helloworld.build w katalogu PROJECT_ROOT/platforms/ios/build. Czy coś mi umyka?Jak mogę wdrożyć (utworzyć .ipa) aplikację iPhone przy użyciu "cordova build ios --release"?

Odpowiedz

59

znalazłem ten rozkaz, który pracował dla mnie:

cordova build ios --device 
cd platforms/ios/build/device 
/usr/bin/xcrun -sdk iphoneos PackageApplication "$(pwd)/$PROJECT_NAME.app" -o "$(pwd)/$PROJECT_NAME.ipa" 

Źródło: http://www.splinter.com.au/xcode-4-command-line-builds-of-iphone-apps/

zrobiłem uruchomić @MD. Najpierw skrypt Ruby Mohiuddina Ahmeda, który zmieniłby mój plik xcodeproj. Nie jestem pewien, czy to było konieczne, ale nie sądzę.

Edytowane w celu wyjaśnienia procesu przez dodanie polecenia cordova build zgodnie z sugestiami komentarzy.

+13

Prawy odpowiedź. Aby wyjaśnić: uruchom 'cordova build ios --device', aby wygenerować aplikację na' platformach/ios/build/device' – M165437

+0

Tak, działa wspaniale przy użyciu 'cordova build ios --device' –

+0

Sprawdziło się doskonale dla mnie! – vinesh

5

I w końcu zorientowali się sposób zautomatyzować za pomocą xcodeproj, Xcode i ten skrypt Ruby

require 'xcodeproj' 
xcproj = Xcodeproj::Project.open("HelloWorld.xcodeproj") 
xcproj.recreate_user_schemes 
xcproj.save 

a następnie w katalogu PROJECT_ROOT/platforms/ios/ to polecenie pomógł mi do generowania mój *.ipa:

xcodebuild -project HelloWorld.xcodeproj -exportArchive -exportFormat ipa -archivePath $(pwd)/HelloWorld.xcarchive -exportPath $(pwd)/HelloWorld.ipa CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -alltargets -configuration Release 

Myśli, że możemy podpisać nasze. IPA później :)

0

Możesz wypróbować nowe narzędzie od http://fir.im.

Mają narzędzie jodły cli napisane w rubinie. Można go zainstalować za pomocą następującego polecenia:

sudo gem install fir-cli --no-ri --no-rdoc 

Zarejestruj konto (wszystko za darmo jak w starym dobrym testflight) i otrzymać token z Twoim profilem. W wierszu polecenia uruchom:

fir login 

Podaj swój token.

CD do katalogu, w którym znajduje się .xcodeproj.

fir build_ipa . 

Po chwili (jeśli sukces kompilacji) znajdziesz swój ipa w folderze ./build_ipa.

33

Jeśli używasz Cordova iOS 3.9.0 lub nowszy, można użyć tego polecenia, aby utworzyć .ipa bezpośrednio z CLI bez dodatkowych poleceń:

cordova build ios --device --release 

Musisz plik build.json na korzeń projektu

{ 
    "ios": { 
    "debug": { 
     "codeSignIdentity": "iPhone Developer", 
     "provisioningProfile": "your-dev-provisioning-profile-UUID-here" 
    }, 
    "release": { 
     "codeSignIdentity": "iPhone Distribution", 
     "provisioningProfile": "your-distribution-provisioning-profile-UUID-here" 
    } 
    } 
} 

aby uzyskać UUID otworzyć plik .mobileprovision w edytorze tekstu i szukać „UUID”, nie wiem, czy istnieje prostszy sposób na znalezienie go.

przypadku korzystania Xcode 8 build.json potrzeb developmentTeam polowych i packageType pole, ale nie muszą już profil administracyjnej, Również codeSignIdentity powinny być iPhone Developer zarówno debugowania i wydaniu:

{ 
    "ios": { 
     "debug": { 
      "codeSignIdentity": "iPhone Developer", 
      "developmentTeam": "FG35JLLMXX4A", 
      "packageType": "development" 
     }, 
     "release": { 
      "codeSignIdentity": "iPhone Developer", 
      "developmentTeam": "FG35JLLMXX4A", 
      "packageType": "app-store" 
     } 
    } 
} 

http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html#using-buildjson

+1

Tak jak dla FYI, to nie działało dla mnie. Mam na myśli, że utworzył plik .app, ale nie plik .ipa. Okazało się, że moja platforma iOS ma 3,8, która jest już nieaktualna. Łatwy błąd, aby go uważać. –

+0

Zaktualizowany, ta funkcja została dodana na cordova ios 3.9.0 – jcesarmobile

+1

Jest to znacznie lepsze opcje .. ponieważ wymaga ustawienia czasu .. !! ! –

Powiązane problemy