-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAppleWatchBuildScript
executable file
·143 lines (117 loc) · 6.28 KB
/
AppleWatchBuildScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/bash
#@author wanyukang 2015
#===========================================
#init
workspaceName='*.xcworkspace'
appName=$(basename ./*.xcworkspace)
appName=$(echo $appName | awk -F. '{print $1}')
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${appName}/Supporting Files/${appName}-Info.plist")
filepath=$WORKSPACE/$appName.xcodeproj/project.pbxproj
CodeSignIdentity=\"yourCodeSignIdentity\"
provisioningProfileDir=yourProvisioningProfileDir
DevAppProfileName=youDevAppProfileName
DevAppleWatchKitAppProfileName=yourDevAppleWatchKitAppProfileName
DevAppleWatchKitExtensionProfileName=yourDevAppleWatchKitExtensionProfileName
DebugBuildConfigurationsId=yourDebugBuildConfigurationsId
DebugWatchKitExtensionBuildConfigurationsId=yourDebugWatchKitExtensionBuildConfigurationsId
DebugWatchKitAppBuildConfigurationsId=yourDebugWatchKitAppBuildConfigurationsId
AdcAppProfileName=youAdcAppProfileName
AdcAppleWatchKitAppProfileName=yourAdcAppleWatchKitAppProfileName
AdcAppleWatchKitExtensionProfileName=yourAdcAppleWatchKitExtensionProfileName
ReleaseBuildConfigurationsId=yourReleaseBuildConfigurationsId
ReleaseWatchKitExtensionBuildConfigurationsId=yourReleaseWatchKitExtensionBuildConfigurationsId
ReleaseWatchKitAppBuildConfigurationsId=yourReleaseWatchKitAppBuildConfigurationsId
#============================================
#clean
xctool -workspace $workspaceName -scheme $appName clean
rm -rf ${appName}.xcarchive
rm -rf $WORKSPACE/${appName}.ipa
rm -rf $WORKSPACE/devProfiles
rm -rf $WORKSPACE/adcProfiles
#============================================
#unlock
security unlock-keychain -p yourSecurityPassword
#============================================
#function replace
replaceValue(){
orgin=$(grep -i -n $1 $filepath | head -n 1 | awk -F ':' '{print $1}')
count=$(grep -i -A 200 $1 $filepath | grep -i -n $3 | head -n 1 |awk -F ':' '{print $1}')
let line=$orgin+count-1
echo $line
sed -i '' $line"s/^.*/$2/g" $filepath
}
#============================================
#update profiles
updateProfiles(){
#download
profileName=$2
if [ "$1" = "dev" ];then
ios profiles:download $profileName
fi
if [ "$1" != "dev" ];then
ios profiles:download --type distribution $profileName
fi
#update
profileName=$profileName".mobileprovision"
mv -f $WORKSPACE/$profileName $provisioningProfileDir
}
#============================================
#ENV dev
if [ "$1" = "dev" ];then
configuration="Debug"
#Update profiles
updateProfiles $1 $DevAppProfileName
updateProfiles $1 $DevAppleWatchKitAppProfileName
updateProfiles $1 $DevAppleWatchKitExtensionProfileName
#preread provisioning profile list
ios profiles:list >> devProfiles
fileDevProfiles=$WORKSPACE/devProfiles
#get uuid
AppProvisioningProfile=\"$(grep -i -n $DevAppProfileName $fileDevProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
WatchKitExtensionProvisioningProfile=\"$(grep -i -n $DevAppleWatchKitExtensionProfileName $fileDevProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
WatchKitAppProvisioningProfile=\"$(grep -i -n $DevAppleWatchKitAppProfileName $fileDevProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
#buildConfigurations ID
AppBuildConfigurationsId=$DebugBuildConfigurationsId
WatchKitExtensionBuildConfigurationsId=$DebugWatchKitExtensionBuildConfigurationsId
WatchKitAppBuildConfigurationsId=$DebugWatchKitAppBuildConfigurationsId
fi
#============================================
#ENV release
if [ "$1" = "release" ];then
configuration="Release"
#Update profiles
updateProfiles $1 $AdcAppProfileName
updateProfiles $1 $AdcAppleWatchKitAppProfileName
updateProfiles $1 $AdcAppleWatchKitExtensionProfileName
#preread provisioning profile list
ios profiles --type distribution >> adcProfiles
fileAdcProfiles=$WORKSPACE/adcProfiles
#get uuid
AppProvisioningProfile=\"$(grep -i -n $AdcAppProfileName $fileAdcProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
WatchKitExtensionProvisioningProfile=\"$(grep -i -n $AdcAppleWatchKitExtensionProfileName $fileAdcProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
WatchKitAppProvisioningProfile=\"$(grep -i -n $AdcAppleWatchKitAppProfileName $fileAdcProfiles | awk -F '|' '{print $4}'| awk 'gsub(/^ *| *$/,"")' | head -n 1)\"
#buildConfigurations ID
AppBuildConfigurationsId=$ReleaseBuildConfigurationsId
WatchKitExtensionBuildConfigurationsId=$ReleaseWatchKitExtensionBuildConfigurationsId
WatchKitAppBuildConfigurationsId=$ReleaseWatchKitAppBuildConfigurationsId
fi
#============================================
#replace XCConfigurationList
#replace PROVISIONING_PROFILE
replaceValue "^.*${AppBuildConfigurationsId}.*=" " PROVISIONING_PROFILE = ${AppProvisioningProfile};" "PROVISIONING_PROFILE"
replaceValue "^.*${WatchKitExtensionBuildConfigurationsId}.*=" " PROVISIONING_PROFILE = ${WatchKitExtensionProvisioningProfile};" "PROVISIONING_PROFILE"
replaceValue "^.*${WatchKitAppBuildConfigurationsId}.*=" " PROVISIONING_PROFILE = ${WatchKitAppProvisioningProfile};" "PROVISIONING_PROFILE"
#replace CODE_SIGN_IDENTITY
replaceValue "^.*${AppBuildConfigurationsId}.*=" " CODE_SIGN_IDENTITY = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY"
replaceValue "^.*${WatchKitExtensionBuildConfigurationsId}.*=" " CODE_SIGN_IDENTITY = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY"
replaceValue "^.*${WatchKitAppBuildConfigurationsId}.*=" " CODE_SIGN_IDENTITY = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY"
#replace CODE_SIGN_IDENTITY[sdk]
replaceValue "^.*${AppBuildConfigurationsId}.*=" " \"CODE_SIGN_IDENTITY[sdk=os*]\" = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY\[sdk=os\*\]"
replaceValue "^.*${WatchKitExtensionBuildConfigurationsId}.*=" " \"CODE_SIGN_IDENTITY[sdk=os*]\" = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY\[sdk=os\*\]"
replaceValue "^.*${WatchKitAppBuildConfigurationsId}.*=" " \"CODE_SIGN_IDENTITY[sdk=os*]\" = ${CodeSignIdentity};" "CODE_SIGN_IDENTITY\[sdk=os\*\]"
#============================================
#archive
xctool -configuration $configuration -sdk iphoneos -workspace $workspaceName -scheme $appName archive -archivePath $WORKSPACE/${appName}
#============================================
#app to ipa
xcrun -sdk iphoneos PackageApplication -v $WORKSPACE/${appName}.xcarchive/Products/Applications/${appName}.app -o $WORKSPACE/${appName}.ipa