web-dev-qa-db-ja.com

xcode 5.1:libCordova.aアーキテクチャの問題

昨日(14年3月10日)iOS 7.1がリリースされたとき、Xcode 5.1にアップグレードしたところ、PhoneGap/CordovaプロジェクトがiPhone 5sにコンパイルされなくなることがわかりました。また、Cordovaを最新リリースのv 3.4.0-0.1.3にアップグレードしました。

SOで、アクティブアーキテクチャの変更とアクティブアーキテクチャのみの構築に関連するさまざまなソリューションを読んだことがありますが、いずれも機能しません。エラーが発生しました:

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

そこで、私は次のことを試しました。私のプロジェクトでCordovaLibサブプロジェクトを選択し、プロジェクトとターゲットの両方で、Build Settingsの下のArchitecturesおよびarm64は、デバッグアーキテクチャまたはリリースアーキテクチャのいずれにも含まれていませんでした。この時点でBuild Active Architecture Onlyは「Yes」に設定されます。その結果、次のエラーが発生しました。

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

Build Active Architecture Onlyを「No」に設定すると、エラーは再び次のようになります。

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

他に何を試すべきか分かりません。プロジェクトのアーキテクチャ設定には、iOS 7.1に設定されたキー「Base SDK」のみが含まれます。プロジェクトのターゲットにはアーキテクチャ設定がありません。とにかく、問題は埋め込みCordovaLibサブプロジェクトにあると確信しています。このことをデバイスに正常にコンパイルするにはどうすればよいですか?

更新:ApacheのJiraで同じ問題: https://issues.Apache.org/jira/browse/CB-622

80
inorganik

@Shazronは修正をApache JIRAに投稿しました-彼は修正がCordova 3.5の一部としてリリースされることに注意します:

  1. プロジェクトアイコンを選択します
  2. ビルド設定を選択します。
  3. 「アーキテクチャ」には、$ ARCHS_STANDARD-標準アーキテクチャ(armv7、armv7s、arm64)を選択します
  4. 「有効なアーキテクチャ」の場合、「arm64」を追加します
  5. CordovaLib.xcodeprojアイコンを選択します
  6. (ターゲットではなく)プロジェクトのビルド設定で、条件付きアーキテクチャ設定を削除します(マイナス記号が表示されます)
  7. 「アーキテクチャ」には、$ ARCHS_STANDARD-標準アーキテクチャ(armv7、armv7s、arm64)を選択します
  8. 「有効なアーキテクチャ」の場合、「arm64」を追加します
  9. 6に移動しますが、今は「ターゲット」に対して実行します

この問題に関するShazronの完全な記事へのリンクを次に示します。 http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/

現在リリースされており、何をすべきかの短いバージョンは次のとおりです。

Cordova CLI 3.4.1-0.1.0がリリースされました。これには、このブログ投稿で言及されているすべての修正が組み込まれたCordova iOS 3.4.1が含まれています。 Cordova CLIを更新し、既存のプロジェクトがある場合は、「cordova platform update ios」を実行します。

85
inorganik

動作する別のアプローチ:

  1. プロジェクトナビゲーターの上部にあるプロジェクトをクリックします(Cordova.libサブプロジェクトではありません)。
  2. エディターペインで、プロジェクト(ターゲットではなく)を選択し、[ビルド設定]エディタータブを選択して、[すべて]および[レベル]ボタンをクリックします。
  3. 必要に応じて[アーキテクチャ]グループを展開し、その下の[アーキテクチャ]行を見つけます。
  4. アーキテクチャ行の最初の(解決済み)および3番目(iOSのデフォルト)の列には、標準と表示されます。 2番目の(プロジェクト)列は空白になります。
  5. 空白の2番目の列をクリックして、「$(ARCHS_STANDARD)」という1行のボックスを表示します。
  6. その行をダブルクリックして編集可能にし、「$(ARCHS_STANDARD_32_BIT)」に変更します。
  7. ボックスの外側をクリックして、変更を確認します。これで、最初のボックスと2番目のボックスには$のみが含まれます。
  8. これでビルドできるはずです。
11
Neil Faiman

Xcode 5.1から5.0.2へのダウングレードは機能しましたが、修正が加えられたCordova 3.5の公式リリースを待つことができませんでした。

以前のバージョンのコピーはこちらから入手できます。 https://developer.Apple.com/downloads/index.action

10
AlexLopezIT

彼らは新しいバージョンをリリースしたばかりです .4.1 この問題に対処します。

したがって、TAG 3.4.1を指すように単一のファイルを更新します。

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

24行目:

version: '3.4.0'

に:

version: '3.4.1'

次に、プロジェクトのiOSフォルダーを削除して実行します。

cordova platform add ios

これにより、3.4.1ベースの新しいテンプレートとすべてのパッチがダウンロードされます。

8

このビデオの指示に従ってください: https://www.youtube.com/watch?v=EIkJAKcz8DE

プロジェクトに有効なアーキテクチャにarm64を追加し、Cordovaのプロジェクトのすべての条件付きアーキテクチャを削除するだけです。

5
voyager

最初にCordovaLibプロジェクトをXCode内とは別にビルドしてからプロジェクトをビルドすることで、XCode 5.1でアプリをビルドすることができました。

3
Wayferer

すべてのステートメントとビルド設定、つまり現在のプロジェクトとCordovaプロジェクトにarm64アーキテクチャを追加するだけです。

プロジェクトで:

  • アーキテクチャ
  • 有効なアーキテクチャ

コルドバで:

  • アーキテクチャ
  • デバッグ
  • 解放する
  • IOS SDK

そして最も重要な

-Cordovaビルド設定での有効なアーキテクチャ

この構成は多くの警告を生成しますが、警告が示すすべての行で"%d""%ld"に変更するだけです。

2
Felipe Quirós

Xcodeアイコンをつかんでビンにドラッグしてください!

ここに移動します https://developer.Apple.com/downloads/index.action?name=Xcode そして5.0.2をダウンロードしてインストールします。

インストール後、xcodeを実行し、ターミナルからエミュレーターを試します。

迷惑ですが、私のために働いた!

1
Kevin S