1***@163.com
1***@163.com
  • 发布:2026-06-03 13:57
  • 更新:2026-06-03 13:57
  • 阅读:104

iOS 离线打包提示

分类:uni-app

/Users///ios/SDK/HBuilder-Hello/HBuilder-Hello.xcodeproj Multiple errors: 64-bit mach-o member 'tabinit.o' not 8-byte aligned in '/Users///ios/SDK/SDK/libs/libmp3lame.a'; 64-bit mach-o member 'NSScanner_Extensions.o' not 8-byte aligned in '/Users///ios/SDK/SDK/libs/libTouchJSON.a'

2026-06-03 13:57 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这个问题是由于 Xcode 26 对静态库的 .o 文件对齐要求更严格导致的。libmp3lame.alibTouchJSON.a 这两个库中的目标文件没有满足 8 字节对齐的要求。

根据社区用户的反馈,目前有效的解决方案是手动修复这两个静态库的对齐问题。

解决方案:

你可以使用以下脚本来自动修复这两个库文件的对齐问题。在终端中执行该脚本,它会重新打包 .o 文件,使其满足 Xcode 26 的对齐要求。

#!/bin/bash  
# 修复静态库 .o 文件 8 字节对齐问题  
# 适用于 Xcode 26 / 新版 ld 要求  

set -e  

# 获取脚本所在目录,请根据实际情况修改 LIBS_DIR 路径  
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"  
LIBS_DIR="$BASE_DIR/SDK/SDK/Libs"  
WORK_DIR="/tmp/fix_alignment_work"  

fix_library() {  
    local LIB_PATH="$1"  
    local LIB_NAME=$(basename "$LIB_PATH")  
    echo "=========================================="  
    echo "正在修复: $LIB_NAME"  
    echo "=========================================="  

    # 备份原文件  
    if [ ! -f "${LIB_PATH}.bak" ]; then  
        cp "$LIB_PATH" "${LIB_PATH}.bak"  
        echo "✅ 已备份为 ${LIB_NAME}.bak"  
    else  
        echo "⚠️ 备份已存在,跳过备份"  
    fi  

    # 获取架构列表  
    ARCHS=$(xcrun lipo -info "$LIB_PATH" | sed 's/.*are: //' | sed 's/.*is architecture: //')  
    echo "包含架构: $ARCHS"  

    # 创建工作目录  
    rm -rf "$WORK_DIR"  
    mkdir -p "$WORK_DIR"  

    local THIN_LIBS=()  
    for ARCH in $ARCHS; do  
        echo "处理架构: $ARCH"  
        local ARCH_DIR="$WORK_DIR/$ARCH"  
        mkdir -p "$ARCH_DIR"  

        # 提取单架构  
        xcrun lipo "$LIB_PATH" -thin "$ARCH" -output "$ARCH_DIR/thin.a"  

        # 使用 libtool 重新打包(会修复对齐问题)  
        cd "$ARCH_DIR"  
        xcrun ar x thin.a  
        rm -f thin.a .SYMDEF ".SYMDEF SORTED"  
        xcrun libtool -static -o "thin.a" *.o  
        THIN_LIBS+=("$ARCH_DIR/thin.a")  
    done  

    # 合并架构  
    xcrun lipo -create "${THIN_LIBS[@]}" -output "$LIB_PATH"  
    echo "✅ 修复完成: $LIB_NAME"  
    echo ""  
}  

# 修复 libmp3lame.a  
fix_library "$LIBS_DIR/libmp3lame.a"  

# 修复 libTouchJSON.a  
fix_library "$LIBS_DIR/libTouchJSON.a"  

echo "所有修复完成!"

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

使用步骤:

  1. 将上述脚本保存为 fix_alignment.sh 文件,并放在与 SDK 文件夹同级或合适的位置。
  2. 根据你实际的 SDK 库文件路径,修改脚本中 LIBS_DIR 变量的值,确保它指向包含 libmp3lame.alibTouchJSON.a 的目录。
  3. 在终端中给脚本添加执行权限并运行:
    chmod +x fix_alignment.sh  
    ./fix_alignment.sh  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  4. 脚本执行完毕后,重新在 Xcode 中进行编译即可。

注意: 这个问题目前已知存在于 HBuilderX 5.07 版本对应的 iOS 离线 SDK 中。如果后续官方更新了离线 SDK 包,可以直接使用新版本来避免此问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册