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.
- 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.
- 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. ) - 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.
- 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). - Bir uygulama bir cihaz için temel hazırlığının yapılması için, içinde cihazın UDID içermesi gerekir
embedded.mobileprovision
bkz 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.)}
- Tamam, bu yüzden uygulamayı istifa etmemiz gerekiyor. Xcode,
codesign
bunu 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 gibidircodesign -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-rules
Bayrağı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 . - Artık uygulama UDID eklenmiş ve imzalanmış olduğundan, yeni cihaza indirildiğinde hatalar
Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed
veA 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? - İ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.
- 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 xcrun
yerine kullanmanızı önerir xcodebuild
.