Skip to content

Commit c364031

Browse files
author
garenwang
committed
增加xcframework打包脚本
1 parent 1a3e66b commit c364031

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

xcframework_build.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
sed -i '' "s/^\(.*s.pod_target_xcconfig.*\)$/#\1/" "QCloudTrack.podspec"
2+
sed -i '' "s/^\(.*s.pod_target_xcconfig.*\)$/#\1/" "QCloudCore.podspec"
3+
sed -i '' "s/^\(.*s.user_target_xcconfig.*\)$/#\1/" "QCloudCore.podspec"
4+
sed -i '' "s/^\(.*s.pod_target_xcconfig.*\)$/#\1/" "QCloudCOSXML.podspec"
5+
sed -i '' "s/^\(.*s.user_target_xcconfig.*\)$/#\1/" "QCloudCOSXML.podspec"
6+
sed -i '' "s/^\(.*pod 'QCloudTrack\/Cls'.*\)$/#\1/" "Podfile"
7+
8+
pod install
9+
chmod +x xcframework_package.sh
10+
cd "Pods"
11+
12+
# 设置其他变量
13+
OUTPUT_DIR="xcframework"
14+
15+
# 清理之前的构建
16+
rm -rf "$OUTPUT_DIR"
17+
mkdir -p "$OUTPUT_DIR"
18+
19+
../xcframework_package.sh QCloudTrack $OUTPUT_DIR
20+
cp -R "$OUTPUT_DIR"* "../"
21+
../xcframework_package.sh QCloudCore $OUTPUT_DIR
22+
cp -R "$OUTPUT_DIR"* "../"
23+
../xcframework_package.sh QCloudCOSXML $OUTPUT_DIR
24+
cp -R "$OUTPUT_DIR"* "../"
25+
26+
rm -rf "$OUTPUT_DIR"
27+
cd ".."
28+
echo "编译完成. xcframework地址: $OUTPUT_DIR/"
29+

xcframework_package.sh

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
PROJECT_NAME="$1"
2+
OUTPUT_DIR="$2"
3+
4+
rm -rf "$OUTPUT_DIR"
5+
mkdir -p "$OUTPUT_DIR"
6+
7+
# 编译 iOS 真机 Release 架构
8+
xcodebuild archive -project "Pods.xcodeproj" -scheme "$PROJECT_NAME" -archivePath "$OUTPUT_DIR/iphoneos.xcarchive" -sdk iphoneos -configuration Release SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
9+
10+
# 编译 iOS 模拟器 arm64 Release 架构
11+
xcodebuild archive -project "Pods.xcodeproj" -scheme "$PROJECT_NAME" -archivePath "$OUTPUT_DIR/ios_sim_arm64.xcarchive" -sdk iphonesimulator -arch arm64 -configuration Release SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
12+
13+
# 编译 iOS 模拟器 x86_64 Release 架构
14+
xcodebuild archive -project "Pods.xcodeproj" -scheme "$PROJECT_NAME" -archivePath "$OUTPUT_DIR/ios_sim_x86_64.xcarchive" -sdk iphonesimulator -arch x86_64 -configuration Release SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
15+
16+
# 创建 iOS 真机 framework 目录
17+
mkdir -p "$OUTPUT_DIR/iphoneos"
18+
cp -R "$OUTPUT_DIR/iphoneos.xcarchive/Products/Library/Frameworks/$PROJECT_NAME.framework" "$OUTPUT_DIR/iphoneos/"
19+
20+
# 创建 iOS 模拟器 arm64 framework 目录
21+
mkdir -p "$OUTPUT_DIR/ios_sim_arm64"
22+
cp -R "$OUTPUT_DIR/ios_sim_arm64.xcarchive/Products/Library/Frameworks/$PROJECT_NAME.framework" "$OUTPUT_DIR/ios_sim_arm64/"
23+
24+
# 创建 iOS 模拟器 x86_64 framework 目录
25+
mkdir -p "$OUTPUT_DIR/ios_sim_x86_64"
26+
cp -R "$OUTPUT_DIR/ios_sim_x86_64.xcarchive/Products/Library/Frameworks/$PROJECT_NAME.framework" "$OUTPUT_DIR/ios_sim_x86_64/"
27+
28+
# 将arm64进行模拟器arm64架构编译, 解决arm64库冲突问题
29+
rm -rf $OUTPUT_DIR/temp
30+
mkdir $OUTPUT_DIR/temp
31+
cd $OUTPUT_DIR/temp
32+
33+
ar x "../ios_sim_arm64/$PROJECT_NAME.framework/$PROJECT_NAME"
34+
35+
ARM64_TO_SIM_PATH="Path/arm64-to-sim-main/.build/apple/Products/Release/arm64-to-sim"
36+
37+
for file in *.o; do echo processing $file && $ARM64_TO_SIM_PATH $file; done;
38+
39+
ar crv "../ios_sim_arm64/$PROJECT_NAME.framework/$PROJECT_NAME-sim-arm64" *.o
40+
41+
cd ..
42+
43+
# 合并x86_64与arm64
44+
rm -rf merge
45+
mkdir -p merge/arm64_x86_64
46+
47+
lipo -create ios_sim_arm64/$PROJECT_NAME.framework/$PROJECT_NAME-sim-arm64 ios_sim_x86_64/$PROJECT_NAME.framework/$PROJECT_NAME -output merge/arm64_x86_64/$PROJECT_NAME
48+
49+
rm -rf ios_sim_arm64/$PROJECT_NAME.framework/$PROJECT_NAME-sim-arm64
50+
51+
lipo -info merge/arm64_x86_64/$PROJECT_NAME
52+
53+
cp -R merge/arm64_x86_64/$PROJECT_NAME ios_sim_arm64/$PROJECT_NAME.framework/
54+
55+
lipo -info ios_sim_arm64/$PROJECT_NAME.framework/$PROJECT_NAME
56+
57+
rm -rf $PROJECT_NAME.xcframework
58+
59+
# 创建 xcframework
60+
xcodebuild -create-xcframework \
61+
-framework iphoneos/$PROJECT_NAME.framework \
62+
-framework ios_sim_arm64/$PROJECT_NAME.framework \
63+
-output $PROJECT_NAME.xcframework
64+
65+
rm -rf ios_sim_arm64
66+
rm -rf ios_sim_arm64.xcarchive
67+
68+
rm -rf ios_sim_x86_64
69+
rm -rf ios_sim_x86_64.xcarchive
70+
71+
rm -rf iphoneos
72+
rm -rf iphoneos.xcarchive
73+
74+
rm -rf merge
75+
rm -rf temp
76+
cd ".."

0 commit comments

Comments
 (0)