wsauto 0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/wsauto +142 -0
- data/lib/wsauto.rb +2 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7e4dd11eb08b154e3ee96ea7755fe226d54931c
|
4
|
+
data.tar.gz: aecb49823551da28d694d40586e51d6bb109f1d2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 96d19f8362dfef98563bc688164985e7f53ff1a87aec9b2c76036ba5fc6d84360503d870d0d6e100001a4c2733a2887ff359b5ef5943f97a50a3ed68baafc354
|
7
|
+
data.tar.gz: 034cfe5ba6839470a9b13d52f900513504825d5cf142aff96f36bc71e525c93f66e775c12b89c61144ac2bd738e25bd5786bfdd5e4dda0fc9855278277040ce0
|
data/bin/wsauto
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'xcodeproj'
|
4
|
+
|
5
|
+
def printHelp()
|
6
|
+
puts "【功能】\n 自动将Xcode项目配置成自动签名模式,方便设备调试。"
|
7
|
+
puts "\n【使用方式】\n wsauto [项目根目录] [新BundelID] [DevelopmentTeam]"
|
8
|
+
puts "\n【如何获取 DevelopmentTeam?】\n 使用Xcode打开任意一个项目,勾选 Automatically manage signing,接着选择一个Team, 然后在 BuildSetting 选中 DevelopmentTeam 为你自己账号的那一行,ctrl+c将配置拷贝出来,从拷贝出来的字符串中可以看到 DevelopmentTeam 具体的值,将 DevelopmentTeam 记录下来,以后便可以直接使用了。"
|
9
|
+
puts ""
|
10
|
+
end
|
11
|
+
|
12
|
+
def redPrint(msg)
|
13
|
+
puts "\033[31m#{msg}\033[0m"
|
14
|
+
end
|
15
|
+
|
16
|
+
def greenPrint(msg)
|
17
|
+
puts "\033[32m#{msg}\033[0m"
|
18
|
+
end
|
19
|
+
|
20
|
+
if ARGV.count != 3
|
21
|
+
printHelp()
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
uPrjDir = ARGV[0]
|
26
|
+
uNewBundelID = ARGV[1]
|
27
|
+
uDevelopmentTeam = ARGV[2]
|
28
|
+
|
29
|
+
projectPath = "#{uPrjDir}/microvision.xcodeproj"
|
30
|
+
entitlementsPath = "#{uPrjDir}/microvision-Debug.entitlements"
|
31
|
+
mainAppTargetName = "microvision"
|
32
|
+
toDelTargetNames = Array["notificationservice.appex","notificationcontent.appex","today.appex"]
|
33
|
+
|
34
|
+
if !FileTest::exist?(uPrjDir)
|
35
|
+
redPrint "项目文件: #{projectPath} 不存在"
|
36
|
+
exit 1
|
37
|
+
end
|
38
|
+
|
39
|
+
if !FileTest::exist?(entitlementsPath)
|
40
|
+
redPrint "entitlements文件: #{projectPath} 不存在"
|
41
|
+
exit 1
|
42
|
+
end
|
43
|
+
|
44
|
+
# ---- main logic ----
|
45
|
+
project = Xcodeproj::Project.open(projectPath)
|
46
|
+
if project == nil
|
47
|
+
redPrint "项目文件解析失败"
|
48
|
+
exit 1
|
49
|
+
end
|
50
|
+
toDelTargetNamesWithOutSuffix = toDelTargetNames.map{|item| item.gsub(/\..*/, "")}
|
51
|
+
mainTarget = nil
|
52
|
+
project.targets.each do |target|
|
53
|
+
if target.name == mainAppTargetName
|
54
|
+
mainTarget = target
|
55
|
+
break
|
56
|
+
end
|
57
|
+
end
|
58
|
+
if mainTarget == nil
|
59
|
+
redPrint "获取主target失败"
|
60
|
+
exit 1
|
61
|
+
end
|
62
|
+
|
63
|
+
puts ">> 删除 BuildSetting -> Dependencies"
|
64
|
+
toDelDeps = Array.new
|
65
|
+
for dependency in mainTarget.dependencies
|
66
|
+
if dependency.target != nil && toDelTargetNamesWithOutSuffix.include?(dependency.target.name)
|
67
|
+
toDelDeps << dependency
|
68
|
+
end
|
69
|
+
end
|
70
|
+
for dep in toDelDeps
|
71
|
+
greenPrint " 删除 #{dep.target.name}"
|
72
|
+
dep.remove_from_project()
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
puts ">> 删除 BuildSetting -> Embed App Extensions"
|
77
|
+
toDelCopyFiles = Array.new
|
78
|
+
for copyFilesBuildPhase in mainTarget.copy_files_build_phases
|
79
|
+
for copyFile in copyFilesBuildPhase.files
|
80
|
+
if toDelTargetNames.include?(copyFile.file_ref.path)
|
81
|
+
toDelCopyFiles << copyFile
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
for copyFile in toDelCopyFiles
|
86
|
+
greenPrint " 删除 #{copyFile.file_ref.path}"
|
87
|
+
copyFile.remove_from_project()
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
toDelTargets = Array.new
|
92
|
+
puts ">> 删除 TARGETS 列表"
|
93
|
+
for target in project.targets
|
94
|
+
if toDelTargetNamesWithOutSuffix.include?(target.name)
|
95
|
+
toDelTargets << target
|
96
|
+
end
|
97
|
+
end
|
98
|
+
for target in toDelTargets
|
99
|
+
greenPrint " 删除 #{target.name}"
|
100
|
+
target.remove_from_project()
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
puts ">> 修改bundleID -> #{uNewBundelID}"
|
106
|
+
mainTarget.build_settings("Debug")["PRODUCT_BUNDLE_IDENTIFIER"] = uNewBundelID
|
107
|
+
greenPrint " 修改 Debug BuidlSettings->PRODUCT_BUNDLE_IDENTIFIER"
|
108
|
+
|
109
|
+
puts ">> 开启 AutoSign"
|
110
|
+
mainTarget.build_settings("Debug")["CODE_SIGN_STYLE"] = "Automatic"
|
111
|
+
greenPrint " 修改 Debug BuidlSettings -> CODE_SIGN_STYLE value to 'Automatic'"
|
112
|
+
mainTarget.build_settings("Debug")["CODE_SIGN_IDENTITY"] = "Apple Development"
|
113
|
+
mainTarget.build_settings("Debug")["CODE_SIGN_IDENTITY[sdk=iphoneos*]"] = "Apple Development"
|
114
|
+
greenPrint " 修改 Debug BuidlSettings -> CODE_SIGN_IDENTITY value to 'Apple Development'"
|
115
|
+
mainTarget.build_settings("Debug")["DEVELOPMENT_TEAM"] = uDevelopmentTeam
|
116
|
+
greenPrint " 修改 Debug BuidlSettings -> DEVELOPMENT_TEAM value to 'uDevelopmentTeam'"
|
117
|
+
mainTarget.build_settings("Debug")["PROVISIONING_PROFILE_SPECIFIER"] = ""
|
118
|
+
greenPrint " 修改 Debug BuidlSettings -> PROVISIONING_PROFILE_SPECIFIER value to empty"
|
119
|
+
|
120
|
+
|
121
|
+
puts ">> 删除 Capabilities"
|
122
|
+
emptyEntitlements = '
|
123
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
124
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
125
|
+
<plist version="1.0">
|
126
|
+
<dict/>
|
127
|
+
</plist>
|
128
|
+
'
|
129
|
+
File.open(entitlementsPath,"w") do |f|
|
130
|
+
f.puts emptyEntitlements
|
131
|
+
end
|
132
|
+
greenPrint " 清空 microvision-Debug.entitlements 文件"
|
133
|
+
|
134
|
+
for buildFile in mainTarget.frameworks_build_phase.files
|
135
|
+
if buildFile.file_ref.path.match(/.*StoreKit.framework$/)
|
136
|
+
buildFile.remove_from_project()
|
137
|
+
greenPrint " 删除 Link Binary 中的 'StoreKit.framework' (为了移除 In-App Purchase Capabilities)"
|
138
|
+
break
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
project.save(projectPath)
|
data/lib/wsauto.rb
ADDED
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wsauto
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.4'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- jerry
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-10-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: xcodeproj
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
description: wsauto
|
28
|
+
email: cjsliuj@163.com
|
29
|
+
executables:
|
30
|
+
- wsauto
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- bin/wsauto
|
35
|
+
- lib/wsauto.rb
|
36
|
+
homepage: https://rubygems.org/gems/wsauto
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.5.2.3
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: wsauto
|
60
|
+
test_files: []
|