[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의 일부로 출시 될 것이라고 언급했습니다.
- 프로젝트 아이콘 선택
- 빌드 설정을 선택합니다.
- “아키텍처”에 대해 $ ARCHS_STANDARD-표준 아키텍처 (armv7, armv7s, arm64)를 선택하십시오.
- “유효한 아키텍처”의 경우 “arm64″를 추가합니다.
- CordovaLib.xcodeproj 아이콘을 선택하십시오.
- 프로젝트의 빌드 설정 (대상이 아님)에서 조건부 아키텍처 설정을 삭제합니다 (마이너스 기호를 보려면 마우스를 가져갑니다).
- “아키텍처”에 대해 $ ARCHS_STANDARD-표준 아키텍처 (armv7, armv7s, arm64)를 선택하십시오.
- “유효한 아키텍처”의 경우 “arm64″를 추가합니다.
- 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”를 수행하십시오.
답변
작동하는 또 다른 접근 방식 :
- 프로젝트 탐색기의 맨 위에있는 프로젝트 (Cordova.lib 하위 프로젝트 아님)를 클릭하십시오.
- 편집기 창에서 프로젝트 (대상 아님)를 선택하고 빌드 설정 편집기 탭을 선택한 다음 모두 및 수준 버튼을 클릭합니다.
- 필요한 경우 아키텍처 그룹을 확장하고 그 아래에서 아키텍처 행을 찾습니다.
- 아키텍처 행의 첫 번째 (해결됨) 및 세 번째 (iOS 기본값) 열은 표준이라고 표시됩니다. 두 번째 (프로젝트) 열은 비어 있습니다.
- 빈 두 번째 열을 클릭하면 “$ (ARCHS_STANDARD)”라는 한 줄이있는 상자가 나타납니다.
- 해당 줄을 두 번 클릭하여 편집 가능하게 만든 다음 “$ (ARCHS_STANDARD_32_BIT)”로 변경합니다.
- 상자 바깥 쪽을 클릭하여 변경 사항을 확인합니다. 이제 첫 번째와 두 번째 상자에는 $가 있습니다.
- 이제 빌드 할 수 있습니다.
답변
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” 를 변경하는 것입니다.