代码之家  ›  专栏  ›  技术社区  ›  Emre Önder

错误ITMS-90171:“无效的捆绑结构不允许使用二进制文件myapp.app/libswiftremotemirror.dylib

  •  1
  • Emre Önder  · 技术社区  · 7 年前

    当我试图上传我的ipa时,它是建立在詹金斯的基础上的,我的错误已经降低了。

    错误ITMS-90171:“束结构无效-不允许使用二进制文件'ideapitch.app/libswiftremotemirror.dylib'。您的应用程序可以包含独立的可执行文件或库,而不是支持的捆绑包的cfbundleExecutable。请参阅捆绑编程指南 https://developer.apple.com/go/?id=bundle-structure 有关iOS应用程序包结构的信息。”

    我怎么得到詹金斯的IPA

       /usr/bin/xcodebuild -list -workspace My_App.xcworkspace
       /usr/bin/xcodebuild -scheme My_App -workspace My_App.xcworkspace -configuration Release clean build CONFIGURATION_BUILD_DIR=${WORKSPACE}/build -UseModernBuildSystem=0
       /usr/bin/xcrun -sdk iphoneos PackageApplication -v "${WORKSPACE}/build/My_App.app" -o ${WORKSPACE}/build/My_App${PRODUCT_VERSION}-${PRODUCT_VERSION}.ipa
    
       ditto -c -k --keepParent -rsrc "${WORKSPACE}/build/My_App.app.dSYM" ${WORKSPACE}/build/My_App-${PRODUCT_VERSION}-${PRODUCT_VERSION}-dSYM.zip
    

    当我在xcode上获得ipa时,一切都正常。但是,我需要在詹金斯身上做。什么会导致这个问题?谢谢您。

    编辑 我搜索了一下,找到了一些帖子(比如下面的一个)。但是,我需要找出这个问题的行或代码,这样我就不能直接复制和粘贴答案。所以请不要把它标记为副本。

    ERROR ITMS-90171: "Invalid Bundle Structure The binary file APP.app/libswiftRemoteMirror.dylib is not permitted

    1 回复  |  直到 7 年前
        1
  •  0
  •   Emre Önder    7 年前

    问题是获取构建,然后从中获取IPA。在我搜索时,正确的路径是存档项目,然后使用xcodebuild从存档中获取ipa。

    正确的两行代码是:

     /usr/bin/xcodebuild -quiet -workspace ${workspaceName} -scheme ${schemeName} -sdk iphoneos -configuration Release archive -archivePath ${WORKSPACE}/build/${appName}.xcarchive
     /usr/bin/xcodebuild -exportArchive -archivePath ${WORKSPACE}/build/${appName}.xcarchive -exportOptionsPlist My_Project_Main_Folder/Resources/${environment}/${environment}_ExportOptions.plist -exportPath ${WORKSPACE}/build
    

    附笔: PackageApplication和XcodeBuild之间存在差异。xcodebuild需要一个导出选项plist文件,它告诉xcodebuild它使用什么选项,如证书、配置文件和比特码支持等。

    示例导出选项plist文件:

        <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>compileBitcode</key>
        <false/>
        <key>destination</key>
        <string>export</string>
        <key>method</key>
        <string>development</string>
        <key>provisioningProfiles</key>
        <dict>
            <key>com.iamdeveloper.myapp.dev</key>
            <string>My App Development Provision</string>
        </dict>
        <key>signingCertificate</key>
        <string>iPhone Developer</string>
        <key>signingStyle</key>
        <string>manual</string>
        <key>stripSwiftSymbols</key>
        <true/>
        <key>teamID</key>
        <string>XXXXXXXXXX</string>
        <key>thinning</key>
        <string>&lt;none&gt;</string>
    </dict>
    </plist>