如何用xcode开发动态库并且调试微信

1. 创建一个WeChat工程,并且在工程里头创建动态库

2. 连接手机,把工程项目下到手机上,即真机调试,这时会在WeChat.app文件夹里生成embedded.mobileprovision文件

3.通过命令生成entitlements.plist文件

security cms -D -i "embedded.mobileprovision" > t_entitlements_full.plist

/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' t_entitlements_full.plist > entitlements.plist

4. 编写脚本(通过脚本,在编译工程后,利用新生成的动态库生成WeChat.app, 替换原有目录下的app文件)

#!/bin/bash

BUNDLEIDENTIFIER=hongfa.WeChat1

APPLICATIONIDENTIFIER=***.${BUNDLEIDENTIFIER}

WECHATFILEPATH="${BUILT_PRODUCTS_DIR}"

LIBNAME="${BUILT_PRODUCTS_DIR}/WeChatSDK.dylib"

TEMPDIR=$(mktemp -d)

ORIGINDIR="${BUILT_PRODUCTS_DIR}"

# 0.get argv

if [ x$1 != x ]

then

BUNDLEIDENTIFIER=$1

fi

# 1.unzip ipa 解压ipa包

if [ $arch == "arm64" ]

then

unzip -qo ${WECHATFILEPATH}/WeChat-dump-arm64.ipa -d $TEMPDIR

else

unzip -qo ${WECHATFILEPATH}/WeChat-dump-armv7.ipa -d $TEMPDIR

fi

# 2.copy files 拷贝步骤二和三生成里的embeded.mobileprovision和entitlements.plist 文件到临时目录, 拷贝动态库到临时目录

cp ${WECHATFILEPATH}/WeChat.app/embedded.mobileprovision $TEMPDIR/

cp ${WECHATFILEPATH}/WeChat.app/entitlements.plist $TEMPDIR/

cp ${LIBNAME} $TEMPDIR/

# 3.resign 对entitlements.plist 和info.plist 文件的修改

cd $TEMPDIR

plutil -replace application-identifier -string ${APPLICATIONIDENTIFIER} entitlements.plist

plutil -replace CFBundleIdentifier -string ${BUNDLEIDENTIFIER} Payload/WeChat.app/Info.plist

#将动态库注入到ipa包解压出来的微信可执行文件

cp ${LIBNAME} Payload/WeChat.app/

insert_dylib --all-yes @executable_path/WeChatSDK.dylib Payload/WeChat.app/WeChat

mv Payload/WeChat.app/WeChat_patched Payload/WeChat.app/WeChat

chmod +x Payload/WeChat.app/WeChat

#删除_CodeSignature,PlugIns,Watch这几个文件夹,是因为如果修改了bundleid,这几个文件夹里的某些文件也需要修改,否则会安装失败,所以直接删除,以免影响安装程序

rm -rf Payload/WeChat.app/_CodeSignature

rm -rf Payload/WeChat.app/PlugIns

rm -rf Payload/WeChat.app/Watch

cp embedded.mobileprovision Payload/WeChat.app/

cp entitlements.plist Payload/WeChat.app/

#对动态库和新生成的WeChat包进行重新签名

codesign -fs "iPhone Developer: mingle wang (S39QH5W8N2)" --no-strict --entitlements=entitlements.plist Payload/WeChat.app/WeChatSDK.dylib

codesign -fs "iPhone Developer: mingle wang (S39QH5W8N2)" --no-strict --entitlements=entitlements.plist Payload/WeChat.app

# 4.end 删除原有的WeChat.app,

rm -rf ${ORIGINDIR}/WeChat.app

mv Payload/WeChat.app ${ORIGINDIR}

rm -rf ${TEMPDIR}

你可能感兴趣的:(如何用xcode开发动态库并且调试微信)