2017-09-25 15 views
3

Ad-hoc 배포 용 아카이브를 내보내는 동안 Google 프레임 워크가 포함 된 앱에서 비트 코드 누락에 대해 불만을 표시합니다.임시 배포 용 아카이브를 내보내는 동안 비트 코드를 확인하지 못했습니다. Xcode 8.3.3 및 Xcode 9를 시도했습니다.

나는 Apple에서 제공 한 설명서를 참조하여 입니다. 문서에 나열된 가능한 원인은 시나리오와 유사하지 않습니다. (우리는 어셈블리 명령어를 사용하거나 기형의 Info.plist 파일이되지 않습니다)

나는 비슷한 질문 SO

Error while exporting with Bitcode enabled (symbol not found for architecture armv7)

Is it possible to create a universal iOS framework using bitcode?

New warnings in iOS 9

그러나에 게시 된 다음 겪었 제공된 솔루션이 제대로 작동하지 않는 것 같습니다.

사용자 정의 빌드 설정에서 BITCODE_GENERATION_MODE 플래그를 추가하려고했습니다. 또한 -fembed-bitcode -marker & -fembed-bitcode을 프레임 워크 대상의 기타 C 플래그에 추가하려고 시도했습니다. 비트 코드 세그먼트는 suggested 명령

otool -l -arch arm64 <framework_name> | grep __LLVM 

그것은 2 개 세그먼트

segname의 __LLVM

segname의 __LLVM

를 도시 사용하여 내 생성 틀 내에 존재하는 경우

는 I 점검 그러나 수출 보관소에 Xcode는 여전히 결석 한 비트 코드에 대해 불평합니다.

이 문제가 Xcode 버전 (8.3.3과 9.0을 사용 했음)으로 인한 것인지 확인하기 위해 앱 스토어에 앱을 업로드하려고 시도했지만 iTunes Store에서 빌드 가져 오기 오류에 대한 이메일을 받았습니다.

iOS 앱 처리 중 APP_NAME 1.0 (4)이 앱 훑어보기 과정에서 오류가 발생하여 앱을 thin아 낼 수 없습니다. 앱에 비트 코드가 포함되어있는 경우 비트 코드 처리가 실패했을 수 있습니다. 이러한 오류 때문에이 앱 빌드는 검토를 위해 제출하거나 App Store에 배치 할 수 없습니다. 이 문제를 해결하는 데 도움이되는 정보는 기술 노트 2432를 참조하십시오.

PS : 호스트 응용 프로그램에서 비트 코드를 지원해야하는 경우 Bitcode를 사용하지 않도록 설정할 수 없습니다.

Error while exporting the Archieve

답변

9

는 오류 설명은 해결책을 찾기 위해 잘못된 방향으로 날 데려 갔어.

이 오류는 비트 코드와 관련이 없습니다. 프레임 워크에 시뮬레이터 조각이 포함 된 경우 (i386 x86_64)

아카이브 전에 제거하면 문제가 해결되었습니다.

실행 스크립트 단계를 추가하여 다음 코드로 대상 단계를 빌드하여 오류를 제거하는 데 도움이됩니다.

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" 

# This script loops through the frameworks embedded in the application and 
# removes unused architectures. 
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK 
do 
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) 
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" 
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" 

EXTRACTED_ARCHS=() 

for ARCH in $ARCHS 
do 
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" 
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" 
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") 
done 

echo "Merging extracted architectures: ${ARCHS}" 
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" 
rm "${EXTRACTED_ARCHS[@]}" 

echo "Replacing original executable with thinned version" 
rm "$FRAMEWORK_EXECUTABLE_PATH" 
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" 

done 

크레딧 : http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/

+0

제거하는 방법 (i386 x86_64), 어디서부터? Runscript를 추가하려면 '+'btn을 클릭 한 다음 제공된 스크립트를 작성하면서 보관하는 동안 동일한 문제가 발생합니다. 내가 어떻게 모르는지 모르겠지만 나는 아직 i386 x86_64를 제거하지 않았다. –

+0

이 @Vipin을 살펴 보아라. 나의 enableBitcode = NO는 항상 있지만, YES로 설정하고 싶지는 않다. –

0

는 다음을 시도해보십시오

  • 이 프레임 워크는 빌드 단계에서 복사 프레임 워크 스크립트 아래에 추가되어 있는지 확인합니다.
  • 는 사용 BITCODE_GENERATION_MODE 대신 BITCODE_GENERATION_CODE
+0

빌드 설정에서 'NO'로 비트 코드를 사용 설정했다. 오타를 수정하기 위해 내 질문을 수정했습니다. 필자는 빌드 단계에서 새로운 "파일 복사 단계"를 추가하려고합니다. 불평하는 프레임 워크를 추가하고 내 결과에 대해 알려줍니다. – Vipin

+0

Hey Roy K, Copy Framework Script 빌드 단계는 xcode 빌드 단계에서 볼 수 없으며 프레임 워크에 파일 단계 복사를 추가했습니다. 하지만 행운을 빕니다. ( – Vipin

0

나는 내가 실제로 빌드 설정에서 BITCODE_GENERATION_MODE을 사용