[ios] xcode 5.1 : libCordova.a 아키텍처 문제

어제 (3/10/14) iOS 7.1이 출시되었을 때 Xcode 5.1로 업그레이드했고 내 PhoneGap / Cordova 프로젝트가 더 이상 내 iPhone 5s로 컴파일되지 않는다는 것을 발견했습니다. 또한 Cordova를 최신 릴리스 인 v 3.4.0-0.1.3으로 업그레이드했습니다.

나는 그렇게 변화하는 활성 아키텍처와 활성 아키텍처 만 구축과 관련된 많은 다른 솔루션을 읽었으며 그중 어느 것도 작동하지 않습니다. 그래서 여기에 내가 시도한 것과 내가 얻는 오류가 있습니다. 처음에는 오류가 발생했습니다.

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

그래서 다음을 시도했습니다. 내 프로젝트에서 CordovaLib 하위 프로젝트를 선택했고 프로젝트와 대상 모두 에서 아키텍처 아래의 빌드 설정 으로 이동하여 디버그 또는 릴리스 아키텍처에 포함되지 않았 는지 확인했습니다 . 현재 Build Active Architecture Only 는 “Yes”로 설정되어 있습니다. 그 결과 다음과 같은 오류가 발생했습니다.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

설정 만 빌드 액티브 아키텍처를 “아니오”로 오류가 다시된다 :

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-6223



답변

@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으로 이동하지만 이제 “Target”에 대해 수행합니다.

다음은이 문제에 대한 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 플랫폼 업데이트 ios”를 수행하십시오.


답변

작동하는 또 다른 접근 방식 :

  1. 프로젝트 탐색기의 맨 위에있는 프로젝트 (Cordova.lib 하위 프로젝트 아님)를 클릭하십시오.
  2. 편집기 창에서 프로젝트 (대상 아님)를 선택하고 빌드 설정 편집기 탭을 선택한 다음 모두 및 수준 버튼을 클릭합니다.
  3. 필요한 경우 아키텍처 그룹을 확장하고 그 아래에서 아키텍처 행을 찾습니다.
  4. 아키텍처 행의 첫 번째 (해결됨) 및 세 번째 (iOS 기본값) 열은 표준이라고 표시됩니다. 두 번째 (프로젝트) 열은 비어 있습니다.
  5. 빈 두 번째 열을 클릭하면 “$ (ARCHS_STANDARD)”라는 한 줄이있는 상자가 나타납니다.
  6. 해당 줄을 두 번 클릭하여 편집 가능하게 만든 다음 “$ (ARCHS_STANDARD_32_BIT)”로 변경합니다.
  7. 상자 바깥 쪽을 클릭하여 변경 사항을 확인합니다. 이제 첫 번째와 두 번째 상자에는 $가 있습니다.
  8. 이제 빌드 할 수 있습니다.


답변

Xcode 5.1을 5.0.2로 다운 그레이드하는 것이 저에게 효과적이었습니다. 수정 사항이 포함 된 공식 Cordova 3.5 릴리스를 기다릴 수 없었습니다.

https://developer.apple.com/downloads/index.action 에서 이전 버전의 사본을 얻을 수 있습니다.


답변

이 문제를 해결 하는 새 버전 3.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 기반의 새 템플릿이 다운로드됩니다.


답변

이 비디오의 지침을 따르십시오 :
https://www.youtube.com/watch?v=EIkJAKcz8DE

프로젝트의 유효한 아키텍처에 arm64를 추가하고 Cordova 프로젝트의 모든 조건부 아키텍처를 제거하십시오.


답변

먼저 XCode 내에서 별도로 CordovaLib 프로젝트를 빌드 한 다음 프로젝트를 빌드하여 내 앱을 XCode 5.1로 빌드 할 수있었습니다.


답변

모든 성명서와 건물 설정, 즉 현재 프로젝트와 코르도바 프로젝트에 arm64 아키텍처를 추가하기 만하면됩니다.

프로젝트에서 :

  • 아키텍처
  • 유효한 아키텍처

Cordova에서 :

  • 아키텍처
  • 디버그
  • 해제
  • 모든 iOS SDK

그리고 가장 중요한

-코르도바 빌드 설정에서 유효한 아키텍처

이 구성은 많은 경고를 생성하지만 경고가 말하는 모든 줄에서 “% ld”“% d” 를 변경하는 것입니다.