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


81

어제 (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


2
나는 똑같은 문제가 있습니다. iOS 7.1 및 Xcode 5.1은 한동안 개발자가 사용할 수 있었기 때문에 Cordova 팀이 출시되기 전에 최소한 이에 대한 경고를 발행하지 않은 것은 실망 스럽습니다.
Ade 2011 년

네. 최신 Cordova가 설치된 새로운 'Hello World'Cordova 프로젝트를 만들었는데 성공적으로 컴파일되지 않았습니다.
inorganik

iOS 7.0 SDK를 확보하고 다시 설치할 수 있습니까?
Ade

이 설정 을 사용하여 컴파일 했지만 아카이브 유효성 검사로 이동하면 오류가 발생합니다. **이 번들은 유효하지 않습니다. armv7s 아키텍처를 포함하는 앱은 armv7 아키텍처를 포함해야합니다. 어느 나는 것처럼 보이기 때문에 이상한 모두 포함되어 있습니다.
Ade 2011 년

3
Apache Cordova JIRA 문제의 단계 수정 : issues.apache.org/jira/browse/CB-6223 .
Shazron 2014 년

답변:


86

@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"를 수행하십시오.


10
우수한. # 6 단계에서 다음 항목을 모두 삭제해야한다고 생각하는 것이 맞 습니까? SCREENSHOT ?
Ade 2011 년

1
그것은 좋아 보인다 응용 아카이브 및 유효성 : 처음에. 그러나 임시 배포로 내 보내면 iPhone 5S에서 실행되지 않습니다.
Ade

7
예,이 답변은 앱이 5S에서 컴파일 및 설치되도록하지만 실행을 시작하면 lldb 오류가 발생하고 충돌이 발생합니다 (또는 Xcode를 실행하는 동안 Mac에 연결된 장치를 실행하는 경우 일시 중지됨).
Jough Dempsey

5
다음은 @Shazron 게시물에 대한 링크입니다. 3 개의 문제를 다룹니다. shazronatadobe.wordpress.com/2014/03/12/…
stefbach

나는 그것이 나를 위해 작동하는지 확인합니다. 대상 'Cordova Lib'에 대한 조건부 아키텍처 설정을 제거하는 9 번 포인트를 잊지 마십시오. 프로젝트 'CordovaLib'및 대상 'CordovaLib'모두에 대해 있어야합니다. 아키텍처 설정은 다음과 같아야합니다.-디버그 : 표준 아키텍처 (...)-릴리스 : 표준 아키텍처 (...)
stefbach

11

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

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

10

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

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


3
이것은 작동합니다-유일한 경고는 iOS 7.1을 실행하는 iPhone의 XCode에서 직접 테스트 할 수 없다는 것입니다. 이것은 시뮬레이터가 유용한 곳입니다. 컴파일 된 앱 iOS 7.1 (iPhone 5 및 5S 모두에서 확인 됨)에서 실행할 있으므로 Cordova 3.5가 출시 될 때까지 다운 그레이드하는 것이 최선의 선택 인 것 같습니다.
Ade

이것은 지금 나에게도 가장 잘 작동합니다. Xcode 5.02를 다운로드하고 응용 프로그램에 복사 (XCode_502로 이름 지정)하여 Xcode 5.1 옆에서 실행할 수있었습니다.
EeKay 2014 년

Ade 나는 5.0.2로 다운 그레이드하고 iOS 7.1을 사용하여 iPhone 5 및 iPad 2에서 내 앱을 테스트했습니다. 문제없이 iTunes Connect에도 앱을 제출했습니다.
AlexLopezIT

8

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


감사합니다 @JPRichardson, 지금 업그레이드 :) 수 있습니다
dk123

1
npm 업데이트 cordova -g, 다음 cordova 플랫폼 업데이트 ios
sepulturkey 2014

5

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

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


당신은 나를 너무 많은 두통을 구했습니다. 이 비디오는 몇 시간 동안 고생하던 문제를 해결했습니다.
Bullyen 2015

이것은 나를 위해 일했습니다. 비디오를 만들어 주셔서 감사합니다. 매우 명확 해졌습니다.
John Q

3

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


이것은 나에게도 효과적이었습니다. Xcode를 다운 그레이드 (iOS7.1 장치에서 테스트 할 수 없음)하는 것은 나에게 옵션이 아니기 때문에 완벽합니다. 감사!
Adam Tuttle 2014 년

2

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

프로젝트에서 :

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

Cordova에서 :

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

그리고 가장 중요한

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

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.