创建Xcode工程
1、新建Xcode工程,选择App
模板,添加图片image.jpg
和c函数文件Test.{h,c}
,在ViewController里实现显示图片逻辑,并添加两个按钮,点击按钮调用c函数并通过Alert显示结果。效果如下图:
2、在ViewController.m
同级目录下,新建compile
文件夹
3、选择Xcode菜单栏Product
-> Archive
,进行打包,导出ipa包。解压这个ipa包,复制embedded.mobileprovision
和Info.plist
这两个文件到步骤2创建的compile
文件夹内
命令行打包
一、编译文件
打开命令行工具,进入ViewController.m
同级目录下,查看文件:
ls -l
输出如下图:
1、首先编译main.m文件,命令如下:
xcrun -sdk iphoneos clang -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -c main.m -o compile/main.o
执行成功,会在compile
文件夹下生成main.o
文件:
依次继续编译AppDelegate.m
、SceneDelegate.m
、Test.c
、ViewController.m
,命令如下:
xcrun -sdk iphoneos clang -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -c AppDelegate.m -o compile/AppDelegate.o
xcrun -sdk iphoneos clang -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -c SceneDelegate.m -o compile/SceneDelegate.o
xcrun -sdk iphoneos clang -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -c Test.c -o compile/Test.o
xcrun -sdk iphoneos clang -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -c ViewController.m -o compile/ViewController.o
生成目标文件如下:
2、编译storyboard文件 编译storyboard方式与源码文件有所不同,查看Base.lproj里的文件:
分别编译这两个文件:
ibtool --compilation-directory compile/Base.lproj Base.lproj/Main.storyboard
ibtool --compilation-directory compile/Base.lproj Base.lproj/LaunchScreen.storyboard
编译完成是.storyboardc
格式:
二、链接目标文件 将步骤1生成的目标文件,进行链接:
xcrun -sdk iphoneos clang compile/main.o compile/AppDelegate.o compile/SceneDelegate.o compile/Test.o compile/ViewController.o -arch arm64 -mios-version-min=9.0 -fmodules -fobjc-arc -o compile/BuildApp
删除compile
文件夹下的AppDelegate.o
、main.o
、SceneDelegate.o
、Test.o
、ViewController.o
文件:
rm -f -r compile/AppDelegate.o
rm -f -r compile/main.o
rm -f -r compile/SceneDelegate.o
rm -f -r compile/Test.o
rm -f -r compile/ViewController.o
四、复制图片资源
App用到了一张图片资源,将图片复制到compile
文件夹内:
cp -a image.jpg compile/
五、生成dSYM文件
执行命令:
dsymutil -arch arm64 compile/BuildApp -o compile/BuildApp.app.dSYM
文件结构如下:
1、制作entitlements文件:
security cms -D -i compile/embedded.mobileprovision > compile/temp.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' compile/temp.plist > compile/entitlements.plist
rm -f -r compile/temp.plist
2、查看可用证书
security find-identity -v -p codesigning
3、签名
codesign -fs "Apple Distribution: xxx (xxx)" --entitlements compile/entitlements.plist compile
rm -f -r compile/entitlements.plist
生成签名文件:
七、打包
1、创建文件:
mkdir -p Payload/BuildApp.app
2、复制compile
文件到Payload/BuildApp.app
cp -a compile/ Payload/BuildApp.app
3、包ipa
zip -r -q -g BuildApp.ipa Payload
rm -f -r Payload
生成BuildApp.ipa
文件:
八、安装ipa
先把测试iPhone手机连接到到Mac电脑
1、安装 ideviceinstaller 工具
brew install ideviceinstaller
测试ideviceinstaller
是否安装成功(显示当前所连接设备的udid):
idevice_id --list
打印设备uuid信息:
2、安装ipa包到真机设备
ideviceinstaller -i BuildApp.ipa
打印安装过程:
3、打开真机上的BuildApp
应用