Xcode 7'de derlenen bir iOS uygulamasını App Store, geliştirici programı alt veya jailbreak olmadan uzaktan dağıtmak mı istiyorsunuz?


10

Aşağıdaki bu talimatlara (ayrıca bkz Apple'ın geliştirici belgeleri ve BoltClock cevabı elma geliştirici program veya jailbreak olmadan cihazda test iOS uygulaması ), bu durumda (iOS uygulaması derlemek başardı kökenine olmuyorsa bir video oyun konsolu emülatörü app Apple'ın yönergelerine uyun ve Apple'ın App Store'da asla izin verilmeyecek) Xcode 7'de kişisel iCloud hesabımla imzalayın, iPhone'uma yan yükleyin (USB ile Mac'ime takıp xcode menüsünde iPhone'umu seçerek -> Ürün -> Hedef) ve icloud hesabımla ilişkili sertifikayı cihaza yükleyen Ayarlar -> Genel -> Profil'deki bu imzayla uygulamalara "güvenerek" çalışmasını sağlayın.

Bu adımları şebeke üzerinden indirmeyle çoğaltmak istiyorum. İPhone'a sahip olan ancak Xcode ile bir Mac'e erişimi olmayan ağabeyimle paylaşabileceğim bir yürütülebilir dosya üretmek için Xcode'u alabilir miyim?

StackExchange Network, Apple'ın Mobil Cihaz Yönetimi aracılığıyla kurumsal dağıtımını kullanarak bu soruda belirtildiği gibi iOS uygulama beta programı için böyle bir şey başardı . Görünüşe göre, ücretli bir Apple Developer Program hesabıyla ilişkili bir "geliştirici ekibine" kullanıcı ekleyerek görünüşte 10 ABD doları / yıl için bu işlevselliği sağlayan BuildStore ( http://builds.io/ ) var ( Apple dev belgelerine bakın ) . Xcode 7 ile böyle bir şeyi bir işletme veya hatta düzenli ücretli geliştirici hesabı olmadan yapmak mümkün mü?

Güncelleme: Stacksza'nın yardımı sayesinde, burada özetleyeceğim bazı ilerlemeler kaydettim.

  1. XCode bir arşiv oluşturacaktır (Ürün -> Arşiv), ancak ücretli ADP hesap katmanına abone olmadan bir arşivi geçici dağıtım için bir .ipa dosyasına aktarmanıza izin vermez.
  2. Sorun değil, gerçi komut satırı xcode aracı çünkü does bile hiçbir ücretli ADP hesabıyla, bir .ipa yürütülebilir oluşturun. Gibi bir komut kullanın xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance( Apple Developer hesabı olmadan xcode 6'da ipa nasıl oluşturulur? Bölümündeki Khawar'ın cevabına bakın. )
  3. Ancak bu komut, bir manifest .plist dosyası belirtmenizi gerektirir. Razvan'ın Over The Air (OTA) iOS IPA Dosya Dağıtımı'nda Cevap ? örnek bir manifest.plist öğesinin yanı sıra bir indirme bağlantısı sağlamak için gerekli olan ve bir SSL web sayfasında barındırılması gereken köprü biçimi için yönergeler içerir. SSL URL'sinin uygulamanın paket kimliğine uygun olması gerekebilir, emin değilim.
  4. Ancak yukarıdaki yalnızca uygulama, uygulamayı indiren cihaz için sağlanmışsa ve cihaz zaten geliştirici sertifikasını yüklemişse çalışır. Örneğin, daha önce USB aracılığıyla Xcode'uma bağlanan bir cihaz şimdi uygulamayı kablosuz olarak indirebilir, bu harika. Bu ilerleme. Ancak temiz cihazlar için hatayı alıyorum Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.)(Xcode -> Window -> Devices veya Apple Configurator uygulamasında görüntülenebilen cihazın konsolunda görüldüğü gibi).
  5. Bir uygulama bir cihaz için temel hazırlığının yapılması için, içinde cihazın UDID içermesi gerekir embedded.mobileprovisionbkz dosyanın Do You yerleştir iOS App bir Sağlama Profili Nasıl , nasıl bir IPA en embedded.mobileprovision bir alan kontrol otomatik hale getirmek için? , * .İpa dosyası oluşturmak için hangi profilin kullanıldığını nasıl öğrenebilirim? ve Bir yapıya hangi UDID'nin dahil olduğunu görmenin bir yolu var mı? . Ancak, UDID eklemek için bu dosyayı düzenleyemezsiniz, çünkü uygulamanın CODESIGNATURE ifadesi eşleşmez ve cihaz hatayı bildirirFailed to verify code signature of /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7jBjpk‌​/extracted/Payload/Provenance.app : 0xe8008017 (A signed resource has been added, modified, or deleted.)}
  6. Tamam, bu yüzden uygulamayı istifa etmemiz gerekiyor. Xcode, codesignbunu yapabilen adlı bir komut satırı aracı sağlar . Talimatlar şuradadır: ipa dosyası nasıl yeniden imzalanır? ve IPA (iPhone) İstifa ve bir iPhone App İstifa, yeni Paketi kimliği uç ve Yükleme için Xcode Organizatör göndermek ve manuel olarak yeni bir provizyon profili ile bir IPA yeniden kaydolmak için nasıl . Tam adı Anahtarlıklar Erişimi'nde Sertifikalar sekmesinde bulunabilen ve "iPhone Geliştiricisi: kullaniciadi@mac.com (ABCDEFGHIJ)" gibi görünen geliştirici sertifikamı belirtmem gerekiyordu. Sonra komut gibidir codesign -f -s "iPhone Developer: username@mac.com (ABCDEFGHIJ)" Payload/Provenance.app. Yukarıdaki talimatlardaki örnek komutlar,--resource-rules, ancak derlenmiş uygulamamda böyle bir dosya bulamadım, bu yüzden bu bayrağı kaldırdım. Ne yaptığını ve gerekli olup olmadığını merak ediyorum. Düzenleme: Thomas Kollbach'ın İçerisinde Kod İmzalama mükemmel blog yazısı --resource-rulesBayrağın bir uygulamanın hangi bölümlerinin imzalanması gerektiğini, ancak iOS8 kullanımdan kaldırıldığını ve tüm uygulamanın imzalanması gerektiğini belirtmek için kullanıldığını açıklar .
  7. Artık uygulama UDID eklenmiş ve imzalanmış olduğundan, yeni cihaza indirildiğinde hatalar Could not install embedded profile: 0xe8008003 (This provisioning profile is malformedve A valid provisioning profile for this executable was not found. Sanırım şimdi sorun, cihaz hala geliştirici sertifikasını yüklememiş olmasıdır. Xcode ile yandan yükleme yaparken, uygulama yürütülmeden önce, yüklü sertifikayı Ayarlar -> Genel -> Profil'de bulmanız, sertifikanızı seçmeniz ve "güven" e dokunmanız gerekir. Ancak bu seçenek, geçici uygulamanın kablosuz olarak indirilmesinden sonra görünmez, bu nedenle nasıl devam edeceğimden emin değilim. Geliştirici sertifikasını cihaza yüklemek için bir yol bulmam gerektiğini düşünüyorum. Göre iOS 8.0.2 üzerinde hazırlık profili yükleme, eskiden sertifikayı cihaza e-postayla göndererek mümkün oldu, ancak bu artık iOS 8'den itibaren çalışmıyor. Onaylamayı denemedim. Geliştirici sertifikamı bir iOS aygıtına uzaktan nasıl yükleyebilirim?
  8. İPhone geliştirici sertifikamı Keychain Access'ten dışa aktarmayı ve cihaza e-posta ile göndermeyi denedim. Aygıt sertifikayı yükleyebildi, ancak kırmızı bir uyarı ile imzalanmadığını, Xert / USB ile yüklendiğinde sertifikada böyle bir uyarı olmadığını gösterdi. Ritmik Fistman'a göre bir embedded.mobileprovision dosyasını yeniden şifrelemek mümkün mü? , profilin çalışması için Apple tarafından imzalanmış olması gerekir. Bu yapışma noktası olabilir. Apple, sertifikanızı yalnızca ücretli bir ADP hesabınız varsa imzalayacaktır.
  9. Sean Heber'in provizyonuna ilişkin bu blog yazısı, geliştirici sertifikaları ve provizyon profillerinin genel teorisi hakkında çok aydınlatıcıydı ( Kollbach'la birlikte her ikisinin de okunması gerekir). Bu paragrafı içerir:

    Tüm bunların çalışmasının ve güvenli olmasının nedeni, Apple'ın portalda sağlama profillerini oluşturması ve ardından bunları size teslim etmeden önce kendi özel anahtarlarıyla imzalamasıdır. Hazırlık profillerinin imzalanması yalnızca Apple'ın yapabileceği bir şeydir. Bu nedenle indirdiğiniz dosya geçersiz hale getirilmeden değiştirilemez. Geçersiz bir ön hazırlık profili iOS tarafından kabul edilmeyecektir ve bu nedenle Apple, ön hazırlık profilinin imzalanmasıyla geliştirici portalının ilkinde yapılandırmanıza izin verdiği şeylere erişimi kısıtlayarak, bir geliştirici tarafından neyin sağlanabileceğini ve sağlanamayacağını tam olarak kontrol edebilir. yerleştirme profilleri, jailbreak yapmadan kullanamayacağınız diğer birçok harika seçeneği desteklese bile. Bu yüzden test cihazlarını portala kaydetmelisiniz, sertifikalarınızı portala vb. ekleyin - yalnızca portaldaki şeyler (ve bu nedenle sayıları Apple tarafından kontrol edilebilecek ve keyfi olarak sınırlandırılabilecek) oluşturulan ve uygun şekilde imzalanmış bir hazırlık profiline dahil edilebilir. Portal, Apple'ın sağlama politikalarının ve sınırlamalarının gerçekte uygulandığı yerdir.

Bu kesinlikle bir "hayır" ile sorumu (ücretli bir ADP hesabı olmadan çalışmasını alabilir miyim) yanıtı cevap gibi görünüyor. Bu makale Xcode 7'den önce olmasına rağmen, görünüşe göre Xcode 7, bir cihazın UDID'sini Apple portalına gönderecek ve buna karşılık olarak Apple tarafından imzalanmış ve bu UDID'yi içeren bir hazırlık profili alacaktır. Xcode 7 bunu sadece cihaz USB üzerinden takıldığında ve Xcode tarafından tanındığında yapar, ancak Apple'a manuel bir Xcode isteğinin hazırlanıp hazırlanamayacağını merak eder mi? Bu, Apple'ın malzemelerini rahat olduğumdan tersine derinlemesine inceliyor ve muhtemelen ToS veya her şeyi ihlal ediyor, bu yüzden "hayır" cevabından memnun olduğumu düşünüyorum.

BuildStore için yaklaşık sayfasına göre , benzer bir şeyi e-posta yoluyla yönetiyorlar, bu yüzden mümkün olabilir.

Xcode Komut satırından “Build and Archive” oldukça eskidir (xcode 3 dolaylarında), ancak kullandığım xcrunyerine kullanmanızı önerir xcodebuild.


1
Lütfen bunu bölmeyi düşünün. Soru kısa basit ve anlaşılması kolay olmalıdır. Cevabınıza ve blog yayınınıza nasıl ulaştığınıza ilişkin tüm yanıt / süreç yanıt bölümünde olmalıdır.
bmike

Yanıtlar:


2

Cevap neredeyse EVET!

Apple dev aboneliği olmadan Fabric.io aracılığıyla aynı uygulamanın yeni yapılarını kurmayı başardım. (Sanırım bunları iTunes ile de dağıtabilirsiniz. Test cihazına ipa gönderin ve iTunes üzerinden yükleyebilmelidir.)

Tek dezavantajı, cihazı en az bir kez Xcode'a bağlamanız gerektiğidir . Ardından uzaktan yeni sürümler yükleyebilirsiniz. (Çıplaklığı bilerek manuel olarak yapmanın yolunu bulamadım)

"Bilinmeyen" cihazı xcode 7'ye bağladığınızda, fix issueiçinde bir düğme var Target general settings. Sorunu giderin ve Xcode bu cihazla birlikte yeni bir Temel Hazırlık profili oluşturur. (içinde bulabilirsiniz ~/Library/MobileDevice/Provisioning Profiles)

Daha sonra, bu sağlama profilini uygulamaları Fabric.io aracılığıyla dağıtmak için kullanabilirsiniz

  1. Fabric.io'ya kaydolun
  2. Projeniz için Yapı Ayarlama (adım adım kılavuz vardır)
  3. Xcode'un doğru prov kullandığından emin olun. profil imzalayın. Automaticbenim için çalıştı.
  4. Xcode> Proje> arşiv
  5. kumaş yardımcısı yapıyı algılayacak ve onu dağıtabileceksiniz.

Üzgünüm, Xcode ile yetkin olmayan adamlar, daha az hata eğilimli kılavuz eklemek için fazla zamanım yok, ama umarım bu cevap fikirlere sahip birine yardımcı olacaktır.

İPUCU: ipas ve prov içinde görmek için bu quicklook eklentisini kullanın. profilleri!


1
Evet, bu cevap testimde bulduğum şeyle tutarlı. Hala
Xcode'un

2

Cevabımın asıl yayınlanmasından bu yana piyasaya sürülen bazı iOS 9.x sürümlerinden bu artık bir olasılık bile yok. Apple, yükleme başarısız olduğunda cihaz günlüklerindeki hatalarla gösterildiği gibi OTA indirmelerini ücretsiz olmayan hesaplarla kısıtlıyor.

Uygulamalarım için de harika olacağı için bunu kapsamlı bir şekilde test ettim.

Uygulama OTA'mı bir Geliştirici Programı Üyeliği olmadan dağıtabilir miyim (ücretlidir)?

Bir IPA oluşturabilir ve imzalayabilir ve bunun için Manifest dosyasını oluşturabilirsiniz, ancak cihaza yüklenemez. Bunun nedeni, Xcode'un söz konusu cihaz için IPA'yı yapılandırması gerektiğidir (sözde UDID ile düzgün şekilde imzalanması). Mac'e yeni bir cihaz takmaya ve uygulamanızı Xcode ile çalıştırmaya çalıştığınızda bunun gerçekleştiğini bile görebilirsiniz. Kısa cevap hayır.

Bu işi yapmak için ne yapabilirim?

Apple ile Geliştirici Programına kaydolabilir (maliyetlidir) ve cihazının UDID'sini profilinize ekleyebilir, ardından bir IPA ve bildirim dosyası oluşturabilir, bir web sunucusuna yükleyebilir ve URL'yi gönderebilirsiniz.

Fiyat bariyeri genellikle kötü amaçlı uygulamaların web üzerinden dağıtılmasını engelleyen şey güvenlik içindir. Uygulama indirmelerinin çoğunu App Store'da tutmaya değinmeyin.

Geliştirici programına kaydoldum mu? Şimdi nasıl dağıtırım?

Bir HTTPS web sunucunuz (ve kendi kökünüzü oluşturabileceğiniz bir SSL sertifikanız) olmalıdır. Ayrıca UDID'lerini Geliştirici profilinize eklemiş olmalısınız (bunu nasıl yapacağınızdan tam olarak emin değilim). IPA'yı oluşturmak için Xcode kullanmanız gerekir (Ürün> Arşiv> Dışa Aktar> Geçici Dağıtım için Kaydet> Apple Kimliği ile giriş yapın> Talimatları izleyin) ve bir Plist ve bir IPA dosyası alacaksınız. Her ikisini de sunucunuza koyun ve Plist dosyasındaki değerleri sunucunuzdaki HTTPS URL'leriyle eşleşecek şekilde değiştirin. Ardından, Liste listesi bildirimine bağlantı oluşturmak için özel bir bağlantı kullanırsınız ve kullanıcıdan uygulamanızı yüklemesini isteyen açılır. Her şey yolunda giderse, kullanıcı uygulamanıza sahip olacaktır. İsterseniz kendi güncelleme yönteminizi de kodlamanız gerekir.

Bu, bu noktada dağıtmak istediğiniz bir uygulama ise, App Store'a koymanız daha mantıklı olabilir veya beta testi içinse TestFlight kullanın. Bir geliştirici hesabınız varsa TestFlight'ı kullanabilir ve uygulama testi için bunların tümünü atlayabilirsiniz. Tek ihtiyacınız olan e-postaları ve App Store'dan TestFlight uygulamasını yüklemelerini sağlamak. TestFlight, iTunes Connect'ten yönetilebilir.


Geliştiriciye kaydolduktan sonra uygulamayı nasıl dağıtırsınız?
ziggurism

Yazımı talimatlarla güncelledi.
AppleBetas

Teşekkür ederim, aradığım şey buydu. Ücretli bir geliştirici hesabına ve UDID'lere sahip olmanın gerekli olduğunu söylediğinizi biliyorum, ancak önce bu yöntemi denemek istiyorum. Sonuçları rapor edeceğim.
ziggurism

Bir arşiv oluşturma talimatlarınızı uyguladığınızdan, ancak "Uygulama mağazasına yükle", "onayla" ve "dışa aktar" düğmelerinin tümü gri renkteydi ve aşağıda "Dağıtım, Apple Geliştirici Programına kaydolmayı gerektiriyor" yazan bir bağlantı ile başladı ADP'ye kaydolmak için bir web sayfasına yönlendirin. Yani bir yandan, söz verdiğiniz gibi: Uygulamanızın yalnızca havadan (OTA) geçici dağıtımını yapmak isteseniz bile, Apple Geliştirici Programına 99 $ 'lık bir abonelik gerekli görünüyor. XCode gui IPA'yı ve ön hazırlık profilini oluşturmaz.
ziggurizm

Öte yandan, stackoverflow.com/questions/26928721/… kullanıcı Khawar ADP alt olmadan xcodebuild.ipa arşivi oluşturacak komut satırı kullanılarak yapılabileceğini iddia ediyor ve -exportProvisioningProfilebayrağı kullanırsanız uygulamayı imzalamak ve sağlamak (Pankaj Rathor'un yorumuna bakınız).
ziggurizm

1

Temel olarak, birisi uygulamayı imzalamak zorundadır. IPA dosyasını alabilirsiniz, ancak rastgele cihazlarda çalışmaz. Buna odaklanın ve Xcode kullanarak her bir kişinin güçlüğüne katlanmak isteyip istemediğinize veya Apple'ın uygulamalarınızı imzalaması için ödeme yapmanın mantıklı olup olmadığına hızla karar vereceksiniz.

Herhangi bir eski Apple kimliğiyle iOS 9 geliştirici olmayan imzalamaya güveniyorsanız, test kullanıcılarınızın uygulamayı çalıştırmak için Apple Kimliğinizle oturum açmaları gerekir.

Apple'ın hesapları işlemesi ve bir yıllık geliştirici hesapları için ödeme yaparak imzalaması için ödeme yapabilirsiniz. Ardından, Apple Kimliğinizi uygulamanın test kullanıcılarına / kullanıcılarına dağıtmaktan başka yöntemler için e-posta gönderebilir, uygulamayı herhangi bir sunucuda patlatabilir, TestFlight veya daha kolay kullanabilirsiniz.

Xcode'a sahipse, kaynak kodunu her zaman kardeşinize gönderebilirsiniz, ancak bunun birisinin uygulamayı yüklemesi ve imzalaması için bir Mac'i olmamasının anlamı olduğunu söylemiştiniz.

Hapis kırma, Apple'ın sertifika zincirini dövmekten daha kolaydır, ancak bunu önermiyorum.


Geliştirici olmayan imzalı uygulamaları çalıştırmak için test kullanıcılarının Apple Kimliğimle nerede oturum açmaları gerekir?
ziggurizm

Xcode'da Mac'inizi kullanmak en kolayıdır.
Xcode'a ulaşamazsa

Evet, Xcode'dan USB üzerinden kurulum harika çalışıyor. Benim sorum uzaktan dağıtım / kurulum olasılığıydı. StackExchange beta uygulaması için yaptı. Ben de yapmak istiyorum.
ziggurizm

@ziggurism SE kurumsal sertifika için ödeme yaptı. Bunu yapmak için biraz yasal evraklara ihtiyacınız olacak. Ayrıca yılda birkaç yüz $. TestFlight daha ucuz ve gri alandan daha az seçenek. Kullandıkları sertifikaların lisansına göre SE'nin yaptığı şey muhtemelen "kitapla" değil, ama ben bir avukat değilim ...
bmike
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.