Bir iPhone uygulamasını Xcode'dan gerçek bir iPhone cihazına nasıl dağıtabilirim?


157

99 dolarlık bir Apple sertifikasına sahip olmadan bir iPhone uygulamasını Xcode'dan gerçek iPhone cihazına nasıl dağıtabilirim?


Jailbroken iPhone'unuza nasıl yerleştireceğiniz konusunda çok iyi bir rehber için daha önce sorduğum bir sorunun bu cevabına bakın .
Dan Walker


2
Xcode 7'nin şimdi ücretsiz provizyonu var, bu yüzden uygulamaları gerçek bir cihazda test etmek için bir Apple Geliştirici Hesabına kaydolmanıza gerek yok. Daha fazla ayrıntı için bu cevaba bakınız.
Suragch

Yanıtlar:


56

Uygulama imzalanmamış gibi görünüyor. Cydia'dan ldid'i indirin ve ardından şu şekilde kullanın:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Ayrıca, ikili dosyanın yürütülebilir olarak işaretlendiğinden emin olun: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph


3
Evet, bu yöntemin çalışması için cihazınızı jailbreak yapmanız gerekir. (Açıkçası)
esqew

ldid -S ... komutunu nasıl başlatırsınız? bunun için bir SSH konsoluna mı ihtiyacınız var? bir hapishane IPhone SSH istemcisi almak için ücretsiz bir yolu var mı?
Dan Leahu

tanderson: Cydia'da ldid bir paket var ve OS X için bir derleme yapabilirsiniz
rpetrich

rpetrich Sorularının paketi nasıl elde edeceğiniz değil, nasıl yazacağını ve kullanacağını düşünüyorum. @tanderson Open SSH (ve ardından masaüstünüzden telefona) veya iPhone'un içindeki bir Terminalden geçebilirsiniz . Her iki uygulama da Cydia'dan ücretsiz olarak indirilebilir . SSH ile, uygulamanızı telefona kopyalamak için de kullanabilirsiniz. Bunu çok yaparsanız, diğer cevapları kontrol ettiğinizden emin olun - XCode'un tüm işi size yapmasını sağlayabilirsiniz, ancak bunu yapmak için kandırmak zahmetli bir prosedürdür.
cregox

92

İki howtos karışımı kullandım: Jason ve alex . İkincisi ile hata ayıklama avantajımız var. Çoğunlukla her ikisini de kopyalayacağım (ve alex'leri basitleştireceğim):

Güncelleme Ocak 2012: Bu hala SDK 4.2.1 ve iOS 5.0.1'de çalışıyor - Hepsini yeni bir bilgisayar ve cihazda test ettim!


1. Kendinden İmzalı Sertifika Oluşturma

Bu sertifikanın kullanılmasına izin vermek için iPhone SDK'nızı yamalayın:

  1. Keychain Access.app uygulamasını başlatın. Hiçbir öğe seçilmeden Anahtarlık menüsünden Sertifika Yardımcısı'nı ve ardından Sertifika Oluştur'u seçin.

    • İsim: iPhone Geliştiricisi
    • Sertifika Türü: Kod İmzalama
    • Varsayılanları geçersiz kılmama izin ver: Evet
  2. Devam'ı tıklayın

    • Geçerlilik: 3650 gün
  3. Devam'ı tıklayın

  4. Dışarı Boş E-posta adresi alanına.

  5. Tamamlanana kadar Devam'ı tıklayın .

    "Bu kök sertifikaya güvenilmiyor" ifadesini görmelisiniz . Bu bekleniyor.

  6. İPhone SDK'sını kendinden imzalı sertifikanın kullanılmasına izin verecek şekilde ayarlayın:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Xcode açıksa, bu değişikliğin etkili olması için yeniden başlatın.

Ve iOS 5 kullanıyorsanız, hepsi bu! Şimdi dene! Hata ayıklamaya izin vermeyebilir, ancak uygulama orada olacak!

Buna çok şaşırdım çünkü bilmeniz gerektiği gibi , tüm bu saldırıların ne hakkında olduğu hakkında hiçbir fikrim yok! Yaptığım tek şey, başka bir yerde bulduğum şeyi biraz işaret etmekti.

Bu yüzden evet, tüm yöntem artık aynı şekilde çalışmıyor ve yeni bir tane bulmak için uğraşamadım ... Bunun dışında , Theos adlı bir araç kullanıyor, ancak tüm süreci gerçekleştiremedim.

Son olarak, herhangi bir nedenle kaldırmanız gerekirse , bu yayının sonunu kontrol edin. Benim durumumda, çünkü tüm bu mavinin tümünün neden çalışmayı bıraktığını anlayamadım ve uzun zamandır beklenen lisansı aldığımızdan artık umursamadım. (Korkunç DUNS numarası çok uzun sürüyor ...)

.

.


.

.

.

2. Jailbroken Cihazında Oluşturmak İçin Xcode'u Etkinleştirin

  1. Jailbreak yapılmış iPhone'unuza kaynak ** http://repo.hackyouriphone.org ** ekleyerek AppSync uygulamasını yükleyin

  2. Kod işareti ve yetkileri için SDK gereksinimlerini kaldırın ( sed seviyorum !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Parçaya dikkat ediniPhoneOS5.0.sdk. Örneğin, iOS 4.2 SDK kullanıyorsanız, uygun şekilde değiştirin:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Xcode ekini kullanarak gereksinim kaldırma işlemini sonlandırın. Bu ikili düzenleme anlamına gelir:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Xcode açıksa, bu değişikliğin (ve sonuncusunun) etkili olması için yeniden başlatın.

  5. "Proje> Proje Ayarlarını Düzenle" yi açın (menüden). Tıklayın "Yapı" sekmesine. Listede "Kod İmza Kimliği" ve alt öğesi "Herhangi bir iPhoneOS Aygıtı" bulun ve her ikisini de "Kod İmzalama" girişine ayarlayın :

    alternatif metin

    Bundan sonra 3. adımı geri almaktan çekinmeyin. En azından benim durumumda gayet iyi gitti.

  6. Özel kodlu imzalı sertifikamızla (ilk nasıl yapılır) Xcode'u kod işaretine ayarlamak . Hata ayıklamak istemiyorsanız bu adım atlanabilir:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    İPhone'unuzu takın ve Xcode'u açın. Pencere> Ajanda'yı açın. Sol taraftaki listeden cihazı seçin ve "Geliştirme için kullan" ı tıklayın. Bir provizyon web sitesi girişi yapmanız istenir, iptal'i tıklayın. Meşru provizyonu kolaylaştırmak için oradadır, ancak gayri meşru olmayan provizyonu daha zor hale getirmez.

    Şimdi bu son bölümü yaptığınız her yeni proje için yapmanız gerekiyor . Project> New Build Phase> New Run Script Build Phase menüsüne gidin. Pencerede şunu kopyalayın / yapıştırın:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

.

.


.

.

Kaldırma

1. bölüm için:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

2. bölüm için:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

2 yerine 3. adımı gerçekleştirdiyseniz, bunu da uygun şekilde değiştirin:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

geri kalanı için, sadece XCode'da yaptıklarınızı geri döndürmek ve /Developer/iphoneentitlements401/gen_entitlements.pyisterseniz silmek :

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py

Bu talimatları izlemeye çalıştım, ancak şimdi 'Şema' My Mac 64 bit türünde ve artık simülatör veya gerçek iPhone'u çalıştırmak için herhangi bir seçeneğim yok, bu yüzden kodu bile test edemiyorum. SDK 4.3 kullanıyordum, bunun önemli olup olmadığından emin değilim
nosatalian

1
Aslında güncelleme: iphoneos'tan iOS 4.3'e proje ayarlarında temel SDK'yı değiştirdikten sonra işler işe yarar. Her ne kadar xcode 'Uzak program başlatılırken hata: işlem için görev alınamadı' yazmasına rağmen, uygulamayı tıklayarak başlatabilirim.
nosatalian

1
Bu hatayı alıyorum: The identity used to sign the executable is no longer valid. ... (0xE8008018) 3650 gün süresinin dolmasına rağmen. Telefonun kendisi bir çek yapıyor gibi görünüyor.
Stephen

4.3.2 için bu "yama XCode" hile yapar mı yoksa fren yapacak
Gabor

1
Nokta 6. Benim durumumda /Developer/iphoneentitlements401/gen_entitlements.py dosya izinlerini normal kullanıcının çalıştırmasını sağlamak için değiştirmek zorunda kaldı. Bununla prosedür mükemmel çalışır.
abidibo

43

Xcode 7'den sonra ücretsiz provizyon

Uygulamanızı Apple Developer ücretini ödemek (veya cihazınızı jailbreak yapmak) yerine gerçek bir cihazda test etmek için Xcode 7 ve iOS 9'un desteklediği yeni ücretsiz provizyonu kullanabilirsiniz.

Belgelerden az ya da çok atılan adımlar (oldukça iyi, bu yüzden bir okuma yapın):

1. Apple Kimliğinizi Xcode'a ekleyin

XCode> Tercihler> Hesaplar sekmesi> Ekle düğmesi (+)> Apple Kimliği Ekle'ye gidin. Daha fazla yardım için dokümanlara bakın .

resim açıklamasını buraya girin

2. Proje Gezgini'nde Genel sekmesini tıklatın

resim açıklamasını buraya girin

3. Ekip açılır menüsünden Apple Kimliğinizi seçin.

resim açıklamasını buraya girin

4. Cihazınızı bağlayın ve şema menüsünden seçin.

resim açıklamasını buraya girin

5. Sorunları Düzelt düğmesini tıklayın

resim açıklamasını buraya girin

Paket adının geçersiz olduğu konusunda bir hata alırsanız, benzersiz bir adla değiştirin.

6. Uygulamanızı çalıştırın

Xcode'da, Oluştur ve çalıştır düğmesini tıklayın.

resim açıklamasını buraya girin

7. Uygulama geliştiricisine cihaz ayarlarında güvenin

Uygulamanızı çalıştırdıktan sonra, çalıştırmak istediğiniz uygulama App Store'dan olmadığından bir güvenlik hatası alırsınız.

resim açıklamasını buraya girin

Senin üzerinde cihazın , Ayarlar> Genel> Profil gidin> your-Elma-ID-name > Güven your-Elma-ID-name > Güven.

8. Uygulamanızı cihazınızda tekrar çalıştırın.

Bu kadar. Artık 99 $ 'lık para harcamak zorunda kalmadan kendi (veya kaynak koduna sahip olduğunuz diğer uygulamaları) çalıştırabilirsiniz. Sonunda buna izin verdiğiniz için Apple'a teşekkür ederim.


1
çok teşekkürler. bu, ücretli Apple Geliştirici Lisansı olmadan mükemmel bir şekilde çalıştı.
kishorer747

Bununla birlikte, bazı sorunlar var - bir seferde en fazla 3 uygulama yükleyebilirsiniz ve sertifikayı her hafta yenilemeniz gerekir.
SilverWolf - Monica'yı

@seaturtle, güncelleme için teşekkürler. Sonunda geliştirici lisansı için parayı çatalladım, bu yüzden bu yanıtı güncel tutmadım. Sınırlamalar konusunda bu çok kötü. Android hakkında Apple'dan çok daha güzel şeyler var.
Suragch

9

Resmi SDK ile oluşturulan ve doğrudan xcode üzerinden dağıtılan uygulamalar hakkında konuşuyorsanız yapamazsınız.


8

Cihazınızı jailbreak yapmanız gerekecek.


1
@ Rpetrich'in yöntemini ve yürütülebilir dosyayı cihazın / Applications klasörüne SSH olarak uygulayın, yeniden başlatma / yanıtlamadan sonra çalışmalıdır.
esqew


5

Hiçbir yerde gördüğüm hiçbir şey, (ücretli) bir sertifika olmadan gerçek bir iPhone'a geçici olarak dağıtabileceğinizi göstermez.


4

Dün gece Apple Developer'dan geçiyordum ve orada Hazırlık Sertifikasında "Takım Üyelerini İmzalama" gibi bir şey buldum. Ücretli profile ekip üyeleri eklemenin bir yolu olduğunu düşünüyorum. Uygulama Kimliği Sahibinden (ücretli) sizi ekip üyesi olarak eklemesini isteyebilirsiniz. Emin değilim. Hala arıyorlar.


Evet, ekip üyeleri ekleyebilirsiniz. Yılda 200 cihaz sınırı vardır.
cregox

Cawas - Apple kimliğinize nasıl üye ekleyeceğinizi biliyor musunuz?
Akshay

yalnızca adın önüne @ eklerseniz bildirim alırız. Kendiniz söylediğiniz gibi, önce bir Ödeme Hesabı almanız gerekir. O zaman gerçekten basit olmalı, çünkü nasıl yapılacağına dair herhangi bir öğretici bulamadım. Bunu asla kendim yapmadım, tho.
cregox

3

Hayır, bunu yapmak kolay. Xcode'da, Etkin Yapılandırmayı Serbest Bırak olarak ayarlayın. SDK ne olursa olsun cihazı Simülatör'den Cihaz'a değiştirin. İPhone'unuza doğrudan dışa aktarmak istiyorsanız, onu bilgisayarınıza bağlayın. Oluştur ve Git'e basın. İPhone'unuz bilgisayarınıza bağlı değilse, iPhone'unuzun bağlı olmadığını belirten bir mesaj görüntülenir.

Bu sizin için geçerliyse: (iPhone bağlı değil)

Projeler klasörünüze ve ardından içindeki oluşturma klasörüne gidin. Release-iphoneos klasörüne gidin ve uygulamayı içine alın, iTunes simgesine sürükleyip bırakın. İTouch cihazınızı senkronize ettiğinizde cihazınıza kopyalar. Ayrıca iTunes'ta iPhone için bir uygulama olarak görünecektir.

Bu yardımcı olur umarım!

Not: Bir sertifikanın geçerli olmadığı hakkında bir şey söylüyorsa, Xcode'daki projeye, soldaki dosya yığınındaki küçük proje simgesine tıklayın ve Apple + I tuşlarına basın veya menü çubuğundan Bilgi Al'ı tıklayın. Üst kısımdaki Oluştur'u tıklayın. Kod İmzalama altında, Kod İmzalama Kimliğini - İmzalanmayacak herhangi bir iPhone OS Aygıtını değiştirin.


7
OP'nin imzalama sertifikası veya ön hazırlık profili yoktur. Bu talimatlar üyeler içindir, 99 $ 'lık iPhone Geliştirici Programı, ancak programa kaydolmadan cihazda nasıl çalıştırılacağı sorusunu ele almazsa.
Ocak'ta cdespinosa

2

Farklı sürümler iPhone'unuza bir ön hazırlık profili olmadan dağıtmak için farklı yöntemler kullandığından, bu gerçekten de Xcode'un hangi sürümünü kullandığınıza bağlıdır.

Xcode 3.2.1 iyi bir sürümüdür ve sıralanması kolaydır, ancak hangi sürümü kullandığınızı bilmemiz gerekir.


2

Cawas tarafından gönderilen çözüm XCode4 ile de mükemmel çalışıyor. Ancak, IDE'nin kullanıcı arayüzünde bazı değişiklikler var, bu nedenle Run Script'i bulmak için biraz araştırma yapmanız gerekiyor :)

Proje Gezgini görünümünde projenin kök öğesini tıklatın, ardından orta pencerede Hedef'i seçin, ardından Oluşturma Aşamaları sekmesini tıklatın ve altta Oluşturma Aşaması Ekle düğmesini görürsünüz, tıklayın ve Çalıştır Komut Dosyası Ekle'yi seçin, ardından "codesign "script Cawas tarafından yayınlanmıştır.


1

Geçici çözüm yok. Uygulamaları yalnızca cihazınıza kayıtlı olmaları durumunda geçici olarak dağıtabilirsiniz. Bu, kendi uygulama mağazanızı oluşturmanızı önler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.