1、icon 图片错误
解决方案:此问题是应用开启了ipad设备适配,需要添加ipad App icon,如果应用不在ipad上运行,可以直接选择只在iphone上运行,如图:
2、ERROR ITMS-90087: "Unsupported Architecture. Your executable contains unsupported architecture '[x86_64, i386]' 此错误是由于第三方包的问题导致,需要添加以下脚本:
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|whileread-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=()
forARCHin$ARCHSdo
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
I used it and it worked perfectly.
edited Sep 17 '15 at 18:05KPM
answered Jun 16 '15 at 11:46
pAkY88
6,3233 31 58
2Pity I cannot up vote this answer more than ++ –NCFJan 28 at 17:32
3@pAkY88 I've used this script in my Xcode project to fix up the App Store Issues mentioned above, but now
when I go to Build, I have alot of fatal errors -> fatal error: lipo: input file
(/...Frameworks/Bolts.framework/Bolts) must be a fat file when the -extract option is specified. Any ideas
how to fix this? –SamoanProgrammerFeb 5 at 16:08
1I think it's pretty stupid: you have to combine arm+x86 to allow your app runs on both simulator and device,
and have to strip x86 out to submit to app store. Why Apple doesn't do the strip on their end as long as x86
is detected? They can help a lot of technical reasons to defend this, but none business reason since it's not
user friendly at all. –superarts.orgMar 22 at 4:05
1@fancy yes, check out my post on how I fixed my issuestackoverflow.com/questions/35240330/...–SamoanProgrammerMar 22 at 20:38
2@Skoua Select the relevant target, then "Build Phases" and put it after the "Embed Frameworks" action –TobolJul 11 at 17:43
If you're usingCarthagethen you may experience this issue because the project is:
Missing thecarthage copy-frameworksbuild phase.
Or the build phase doesn't include all the frameworks (incomplete list).
This action filters frameworks to a list of valid architectures(code).Setting up the copy-frameworks build phase
From theCarthage building for iOS steps:
2,2749 33 50
On your application targets’ “Build Phases” settings tab, click the “+” icon and choose “New
Run Script Phase”. Create a Run Script in which you specify your shell (ex: bin/sh), add the
following contents to the script area below the shell:
/usr/local/bin/carthage copy-frameworks
and add the paths to the frameworks you want to use under “Input Files”, e.g.:
$(SRCROOT)/Carthage/Build/iOS/Box.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
This script works around an App Store submission bug triggered by universal binaries and
ensures that necessary bitcode-related files and dSYMs are copied when archiving.
answered Sep 1 at 10:48
odlp
8177 17
Awesome, work :D –zetanovaOct 22 at 0:05
I resolved the error ITMS-90080 by removing a framework (the excellent SVProgressHUD)
from the Embedded Binaries section (Xcode target -> General tab).
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
需注意脚本格式,如图:
3、Invalid Bundle - A nested bundle contains simulator platform listed in CFBundleSupportedPlatforms Info.plist key.此错误主要是第三方包在打包时info.plist 中CFBundleSupportedPlatforms 是设置的模拟环境,改成生产模式就可以,如图:
网友评论
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
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