You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行修改App Extension的Bundle identifier?

如何通过命令行修改App Extension的Bundle Identifier

当然可以通过命令行工具修改App Extension的Bundle Identifier,核心是修改Extension包内的Info.plist配置文件,再重新签名即可,具体步骤如下:

1. 使用PlistBuddy修改Bundle Identifier

macOS自带的PlistBuddy工具可以直接编辑plist文件,完全满足需求:

  • 查看当前Extension的Bundle Identifier:

    /usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" /path/to/YourExtension.appex/Contents/Info.plist
    
  • 修改为匹配宿主应用的Bundle Identifier:
    假设宿主应用的Bundle ID是com.yourcompany.hostapp,想要给Extension设置的后缀是.widget,执行以下命令:

    /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.yourcompany.hostapp.widget" /path/to/YourExtension.appex/Contents/Info.plist
    

2. 修改后重新签名

修改Info.plist会破坏Extension原有的代码签名,必须重新签名才能正常使用,用codesign工具即可:

codesign -f -s "你的开发者证书名称" /path/to/YourExtension.appex

如果不确定证书名称,可以用下面的命令查看本地可用的代码签名身份:

security find-identity -v -p codesigning

3. 批量处理脚本(可选)

如果要给多个宿主应用批量处理,可以写个简单的Shell脚本,自动根据宿主Bundle ID生成Extension的ID并完成修改、签名:

#!/bin/bash
# 用法:./update-extension.sh 宿主BundleID Extension路径 后缀(可选,默认是.extension)
HOST_BUNDLE_ID="$1"
EXTENSION_PATH="$2"
EXT_SUFFIX="${3:-extension}"

EXTENSION_BUNDLE_ID="${HOST_BUNDLE_ID}.${EXT_SUFFIX}"

# 修改Bundle ID
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${EXTENSION_BUNDLE_ID}" "${EXTENSION_PATH}/Contents/Info.plist"

# 重新签名
codesign -f -s "你的开发者证书名称" "${EXTENSION_PATH}"

因为你用Delphi开发主应用,打包时可以调用这个脚本,把当前主应用的Bundle ID传进去,就能自动生成匹配的Extension包,再嵌入到主应用的对应目录即可。

内容的提问来源于stack exchange,提问作者zeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:01:10