2015-01-09 18 views
1

OSX (버전 10.10.1)의 앱 내부 프레임 워크에 심볼릭 링크를 만들어야합니다. 앱이 Qt에서 개발됨에 따라 Xcode 외부에 있습니다. 그것은 프레임 워크를 제공하지만 새로운 규정 준수 규칙을 수행하기 위해 약간의 수정이 필요합니다.앱 번들 내 OSX 프레임 워크에서 심볼릭 링크 만들기

"ln -s path_origin path_target_link"라고하며 분명히 작동합니다. 링크가 만들어져 올바른 위치로 연결됩니다. 나는 응용 프로그램을 통합 설계 할 때

는하지만, 나는 (내 절차를 확인하기 위해, 내가 다른 패키지에서 프레임 워크를 복사

가 유효성을 검사하는 다운로드 오류 "임베디드 프레임 워크의 루트 디렉토리에 개봉 한 내용을"얻을 codesigning 그리고 나는 그것을 성공적으로 서명 할 수있다. 내 방식으로 심볼릭 링크를 만들면 코드 네그가 그 에러를 내기 시작하여 문제는 내 심볼릭 링크 생성이라고 가정한다.)

나는 같은 결과로 다른 방법을 시도했기 때문에 나는 빠뜨려야했다. 어떤 것. 어떤 아이디어?

답변

1

누구에게나 유용합니다. 제 경우에는 문제가 제가 Aboulte Paths와의 링크를 만들고 있다는 것이 었습니다. 분명히 상대 경로 여야합니다. 링크를 이동해야하는 디렉토리로 이동하고 현재 위치와 관련된 링크를 만듭니다.

0

버전 1 코드 기호는 Resources 디렉토리의 파일 만 기록하고 나머지는 무시합니다. 그러나 버전 2는 기본적으로 모든 파일을 기록합니다. 따라서 우리는 모든 프레임 워크 번들의 버전과 앱 바이너리에 서명해야합니다.

프레임 워크 번들 구조가 apple 요구 사항을 충족하는지 확인하십시오. Imposed Framework structured by Apple

Apple 설명서에 따르면 프레임 워크 번들에는 'Contents'폴더가 없습니다. 대신 각 버전 폴더는 Info.plist 파일을 포함하고 최상위 프레임 워크 폴더에서 심볼릭 링크 된 'Resources'폴더를 가져옵니다. Qt5 프레임 워크는 SDK를 빌드 한 후에 잘못된 레이아웃을 갖기 때문에 macdeployqt와 관련된 문제가 아니라 전체 프레임 워크 어셈블리 파트에 문제가 있습니다.

enter image description here

그래서 확인, 앱 번들 불량 레이아웃이 없습니다.

Qt 프레임 워크 번들에 * .prl이있는 경우 (즉, QtCore.framework/QtCore.prl). * .prl 파일은 무슨 일이 벌어지고 있는지 정확히 말하지 않고서도 "끼어 들여진 프레임 워크의 루트 디렉토리에있는 봉인되지 않은 컨텐츠 선물"로 코드 서명하는 것만으로도 문제를 일으킬 수 있습니다. prl 파일이 있으면 제거하십시오.

Info.plist에 올바른 CFBundleExecutable 필드가 있어야합니다. 지금은 그렇지 않습니다. Info.plist의 디버그 버전은 릴리스 버전을 덮어 쓰며 유효하지 않은 데이터를 포함합니다. 특히, CFBundleExecutable은 _debug 접미사가 붙은 라이브러리 이름을 포함합니다. 이 문제가 발생하면 잘못된 info.plist를 수정하십시오.

마지막 단계는 전체 앱 번들에 서명하기 전에 모든 프레임 워크를 코드화해야한다는 것입니다.