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


81

昨日(3/10/14)iOS 7.1がリリースされたとき、Xcode 5.1にもアップグレードしたところ、PhoneGap / CordovaプロジェクトがiPhone5sにコンパイルされなくなったことがわかりました。また、Cordovaを最新リリースv3.4.0-0.1.3にアップグレードしました。

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

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

そこで、以下を試してみました。私は私のプロジェクトでCordovaLibサブプロジェクトを選択し、プロジェクトとターゲットの両方で、私はに行ってきましたビルド設定の下アーキテクチャと必ずその作られたarm64デバッグまたはリリースのアーキテクチャのいずれにも含まれていませんでした。このとき、Build Active ArchitectureOnlyは「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

設定のみビルドアクティブ・アーキテクチャを 「いいえ」に、エラーが再び次のようになります。

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

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

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


2
私はまったく同じ問題を抱えています。iOS7.1とXcode5.1は開発者がしばらくの間利用可能であったため、Cordovaチームがリリース前に少なくともこれについて警告を発しなかったことは残念です。
Ade 2014年

うん。最新のCordovaをインストールして新しい「HelloWorld」Cordovaプロジェクトを作成しましたが、正常にコンパイルされませんでした。
inorganik

iOS 7.0 SDKを入手して再インストールすることは可能ですか?
Ade 2014年

これらの設定を使用してコンパイルしましたが、アーカイブの検証に移動すると、エラーが発生します:**このバンドルは無効です。armv7sアーキテクチャを含むアプリには、armv7アーキテクチャを含める必要があります。私両方含めたように見えるので、これは奇妙です。
Ade 2014年

3
Apache Cordova JIRAの問題の手順を修正します:issues.apache.org/jira/browse/CB-6223
シャズロン2014年

回答:


86

@ShazronはApacheJIRAに修正を投稿しました-修正はCordova3.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 iOS3.4.1が含まれています。Cordova CLIを更新し、既存のプロジェクトがある場合は、「cordova platformupdateios」を実行します。


10
優秀な。ステップ6については、これらすべてを削除する必要があると考えるのは正しいですか:SCREENSHOT
Ade

1
最初は問題ないようです。アプリはアーカイブして検証します。ただし、アドホックディストリビューションとしてエクスポートすると、iPhone5Sでは実行されません。
Ade 2014年

7
はい、この回答により、アプリは5Sでコンパイルおよびインストールされますが、実行を開始すると、lldbエラーがスローされ、クラッシュします(または、Xcodeの実行中にMacに接続されたデバイスを実行している場合は一時停止します)。
Jough Dempsey 2014

5
これが@Shazronの投稿へのリンクです。これは、3つの問題について説明します。shazronatadobe.wordpress.com/2014/03/12/...
stefbach

私はそれが私のために働くことを確認します。ターゲット「CordovaLib」の条件付きアーキテクチャ設定を削除するというポイント9を忘れないでください。プロジェクト「CordovaLib」とターゲット「CordovaLib」の両方に必要です。アーキテクチャ設定は次のようになります
。-

11

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

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

10

Xcode 5.1から5.0.2へのダウングレードは私のために働きました、私は修正で公式のCordova3.5リリースを待つことができませんでした。

以前のバージョンのコピーは、https//developer.apple.com/downloads/index.actionで入手できます。


3
これは機能します-唯一の注意点は、iOS7.1を実行しているiPhoneのXCodeで直接テストできないことです。ここでシミュレーターが役に立ちます。コンパイルされたアプリiOS7.1(iPhone 5と5Sの両方で確認済み)で実行できるため、Cordova3.5がリリースされるまでダウングレードするのが最善のオプションのようです。
Ade 2014年

これは私にとって今も最もうまくいきます。Xcode 5.02をダウンロードして(最初にXCode_502という名前を付けて)アプリケーションにコピーすると、Xcode5.1の横で実行できるようになりました。
EeKay 2014年

Ade私は5.0.2にダウングレードし、iPhone5とiPad2の両方でiOS7.1を使用してアプリをテストしてきましたが、問題なくアプリをiTunesConnectに送信しました。
AlexLopezIT 2014年

8

彼らはちょうど新しいバージョン3.4.1をリリースしましたこの問題に対処をです。

したがって、TAG3.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に基づく新しいテンプレートとすべてのパッチがダウンロードされます。


@JPRichardsonありがとう、今すぐアップグレードします:)
dk123 2014

1
npm update cordova -g、次にcordova platform update ios
sepulturkey 2014

5

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

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


あなたは私をすっごく多くの頭痛を救った。このビデオは、私が数時間苦労していた問題を修正しました。
Bullyen 2015

これは私のために働いた。ビデオを作ってくれてありがとう-それはそれを非常に明確にしました。
ジョンQ

3

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


これは私にもうまくいきました。Xcodeをダウングレードする(そしてiOS7.1デバイスでテストできない)のは私にとって選択肢ではないので、完璧です。ありがとう!
アダム・タトル

2

すべてのステートメントと建物の設定、つまり現在のプロジェクトとコルドバプロジェクトにarm64アーキテクチャを追加する必要があります。

あなたのプロジェクトについて:

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

コルドバ:

  • アーキテクチャ
  • デバッグ
  • リリース
  • 任意のiOSSDK

そして最も重要な

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.