xcode 5.1: libCordova.a mimari sorunları


81

Dün (3/10/14) iOS 7.1 piyasaya sürüldüğünde Xcode 5.1'e de yükselttim ve PhoneGap / Cordova projemin artık iPhone 5'lerime derlenmeyeceğini fark ettim. Ayrıca Cordova'yı en son sürüme yükselttim: v 3.4.0-0.1.3.

SO'da aktif mimarileri bu kadar değiştiren ve sadece aktif mimariler inşa eden birçok farklı çözüm okudum ve hiçbiri işe yaramıyor. İşte denediğim şey ve aldığım hatalar. Başlangıçta şu hatayı aldım:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

Ben de aşağıdakileri denedim. Projemde CordovaLib alt projesini seçtim ve hem proje hem de hedefte Mimariler altında Yapı Ayarları'na gittim ve bunun Hata Ayıklama veya Yayın mimarilerinin hiçbirine dahil edilmediğinden emin oldum . Şu anda Build Active Architecture Only "Yes" olarak ayarlanmıştır. Bu, aşağıdaki hatayla sonuçlandı:arm64

file was built for archive which is not the architecture being linked (armv7): 
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7

Ayar Sadece Yapı Aktif Architecture "No" olarak, hata tekrar olur:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

Başka ne deneyeceğimi bilmiyorum. Projenin mimari ayarları yalnızca iOS 7.1'e ayarlanmış olan "Temel SDK" anahtarını içerir. Projenin hedefinin mimari ayarları yok. Her neyse, sorunun gömülü CordovaLib alt projesinde olduğundan oldukça eminim. Bu şeyin cihazıma başarılı bir şekilde derlenmesini sağlamak için ne yapabilirim?

Güncelleme: Apache'nin Jira'sında aynı sorun: https://issues.apache.org/jira/browse/CB-6223


2
Bende de tam olarak aynı sorun var. iOS 7.1 ve Xcode 5.1 bir süredir geliştiricilerin kullanımına sunuldu, bu yüzden Cordova ekibinin en azından yayınlanmadan önce bu konuda bir uyarı vermemiş olması hayal kırıklığı yaratıyor.
Ade

Evet. En son Cordova'nın kurulu olduğu yepyeni bir 'Merhaba Dünya' Cordova Projesi yarattım ve başarılı bir şekilde derlenemedi.
inorganik

İOS 7.0 SDK'yı ele geçirmek ve yeniden yüklemek mümkün mü?
Ade

Bu ayarları kullanarak derlememi sağladım, ancak Arşivi Doğrula'ya gittiğimde şu hatayı alıyorum: ** Bu paket geçersiz. Bir armv7s mimarisi içeren uygulamaların bir armv7 mimarisi içermesi gerekir. Garip çünkü ikisini de dahil etmişim gibi görünüyor .
Ade

3
Apache Cordova JIRA sorunundaki adımları düzeltin: issues.apache.org/jira/browse/CB-6223 .
Shazron

Yanıtlar:


86

@Shazron düzeltmeyi Apache JIRA'da yayınladı - düzeltmenin Cordova 3.5'in bir parçası olarak yayınlanacağını belirtti:

  1. Proje simgenizi seçin
  2. Derleme Ayarları'nı seçin.
  3. "Mimariler" için, $ ARCHS_STANDARD - Standart mimariler (armv7, armv7s, arm64) seçin
  4. "Geçerli Mimariler" için "arm64" ekleyin
  5. CordovaLib.xcodeproj simgenizi seçin
  6. Proje için Yapı Ayarlarında (Hedef değil), koşullu mimari ayarlarını silin (eksi işaretini görmek için üzerine gelin)
  7. "Mimariler" için, $ ARCHS_STANDARD - Standart mimariler (armv7, armv7s, arm64) seçin
  8. "Geçerli Mimariler" için "arm64" ekleyin
  9. Git 6, ama şimdi "Hedef" için yap

Shazron'un bu sorunu tam olarak yazmasına bir bağlantı: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/

Şimdi yayınlandı ve ne yapılması gerektiğinin kısa versiyonu:

Bu blog gönderisinde bahsedilen tüm düzeltmeleri içeren Cordova iOS 3.4.1'i içeren Cordova CLI 3.4.1-0.1.0 çıktı. Cordova CLI'nizi güncelleyin ve mevcut bir projeniz varsa, "cordova platform güncelleme ios'u" yapın.


10
Mükemmel. Adım # 6 için, bunların TÜMÜNÜ silmem gerektiğini düşünürken haklı mıyım : SCREENSHOT ?
Ade

1
İlk başta iyi görünüyor : Uygulama arşivler ve doğrular. Ancak geçici bir dağıtım olarak dışa aktarıldığında bir iPhone 5S'de çalışmayacaktır.
Ade

7
Evet, bu cevap, uygulamanın bir 5S üzerinde derlenmesini ve yüklenmesini sağlar, ancak çalıştırmaya başladığında bir lldb hatası verir ve çöker (veya Xcode çalıştırırken cihazınızı Mac'inize bağlı olarak çalıştırıyorsanız duraklar).
Jough Dempsey

5
İşte @Shazron gönderisinin bağlantısı. 3 konuyu kapsar: shazronatadobe.wordpress.com/2014/03/12/…
stefbach

Benim için çalıştığını onaylıyorum. 'Cordova Lib' hedefi için koşullu mimari ayarlarını kaldırmak için 9. maddeyi unutmayın. Hem 'CordovaLib' Projesi hem de 'CordovaLib' hedefleri için sahip olmalısınız. Mimari ayarları şöyle görünmelidir: - Hata ayıklama: Standart mimari (...) - Sürüm: Standart mimari (...)
stefbach

11

İşe yarayan başka bir yaklaşım:

  1. Proje gezgininin üst kısmındaki projenize tıklayın (Cordova.lib alt projesine değil).
  2. Düzenleyici bölmesinde projeyi seçin (hedefi değil), Yapı Ayarları düzenleyici sekmesini seçin ve Tüm ve Düzeyler düğmelerini tıklayın.
  3. Gerekirse Mimariler grubunu genişletin ve altındaki Mimariler satırını bulun.
  4. Mimari satırındaki ilk (çözümlenmiş) ve üçüncü (iOS Varsayılanı) sütunlarında Standart yazacaktır; ikinci (proje) sütun boş kalacaktır.
  5. Tek satırlık "$ (ARCHS_STANDARD)" şeklinde bir kutu açmak için boş ikinci sütuna tıklayın.
  6. Düzenlenebilir hale getirmek için bu satırı çift tıklayın, ardından "$ (ARCHS_STANDARD_32_BIT)" olarak değiştirin.
  7. Değişikliğinizi onaylamak için kutunun dışını tıklayın. Şimdi birinci ve ikinci kutularda sadece bir $ olacak.
  8. Şimdi inşa edebilmelisin.

10

Xcode 5.1'den 5.0.2'ye düşürme benim için çalıştı, düzeltmeyle resmi bir Cordova 3.5 sürümü bekleyemedim.

Önceki sürümün bir kopyasını buradan edinebilirsiniz: https://developer.apple.com/downloads/index.action


3
Bu işe yarıyor - tek uyarı, iOS 7.1 çalıştıran bir iPhone'da doğrudan XCode'da test edemeyeceğinizdir. Simülatörün kullanışlı olduğu yer burasıdır. Derlenmiş uygulama olabilir yayınlandı Cordova 3.5 kadar geçersiz kılınması iyi seçenek gibi görünüyor (bir iPhone 5 ve 5S hem de doğruladı) iOS 7.1 vb çalıştırın.
Ade

Bu benim için şu anda en iyi şekilde çalışıyor. Xcode 5.02 indirildi ve onu Uygulamalar'a kopyaladı (önce XCode_502 olarak adlandırıldı), onu Xcode 5.1'in yanında çalıştırmamı sağladı.
EeKay

Ade 5.0.2'ye düşürdüm ve uygulamamı iPhone 5 ve iPad 2'de iOS 7.1 ile sorunsuz bir şekilde test ediyorum, ayrıca uygulamayı iTunes Connect'e sorunsuz bir şekilde gönderdim.
AlexLopezIT

8

Bu sorunları ele alan yeni bir 3.4.1 sürümünü yayınladılar .

Bu nedenle, tek bir dosyayı TAG 3.4.1'e işaret edecek şekilde güncelliyorum:

/usr/local/lib/node_modules/cordova/platforms.js

24. satırdan:

version: '3.4.0'

to:

version: '3.4.1'

Ardından projenizdeki iOS klasörünü kaldırıp şunu çalıştırırsınız:

cordova platform add ios

Bu, tüm yamalarla birlikte 3.4.1'e dayalı yeni şablonu indirecektir.


@JPRichardson Teşekkürler, şimdi yükseltiyorum :)
dk123

1
npm cordova -g güncellemesi, ardından cordova platform güncellemesi ios
sepulturkey

5

Bu videodaki talimatları izleyin: https://www.youtube.com/watch?v=EIkJAKcz8DE

Projelerinize geçerli mimarileri arm64 ekleyin ve Cordova projesinin tüm koşullu mimarisini kaldırın.


Az önce beni çok fazla baş ağrısından kurtardın. Bu video, birkaç saattir uğraştığım sorunu çözdü.
Bullyen

Bu benim için çalıştı. Videoyu yaptığınız için teşekkürler - bunu çok netleştirdi.
John Q

3

Önce CordovaLib projesini XCode içinden ayrı olarak ve ardından projemi oluşturarak uygulamamın XCode 5.1'de derlenmesini sağlayabildim.


Bu benim için de çalıştı. Mükemmel, çünkü Xcode'u düşürmek (ve iOS7.1 cihazlarda test edememek) benim için bir seçenek değil. Teşekkürler!
Adam Tuttle

2

Sadece her ifadeye ve bina ayarına arm64 mimarisini eklemelisiniz, yani mevcut projenize ve cordova projesine.

Projenizde:

  • Mimariler
  • Geçerli mimariler

Cordova'da:

  • Mimariler
  • hata ayıklama
  • serbest bırakmak
  • Herhangi bir ios SDK

VE EN ÖNEMLİ

-Cordova derleme ayarlarında geçerli mimariler

Bu yapılandırma birçok uyarı üretir, ancak uyarının söylediği tüm satırlarda "% ld" için "% d" yi değiştirir .


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.