1、在command中不使用脚本,直接使用【sh jenkins.sh】。 2、创建的项目名称带空格,导致脚本构建失败。.../${APP_NAME}/Info.plist" #取版本号 bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString..." "${project_infoplist_path}") #取build值 bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion.../${APP_NAME}/Info.plist" #取版本号 bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString...uKey和apiKey,是自己的账户对应的userKey和apiKey。
它存储在在应用程序的Info.plist作为CFBundleShortVersionString(版本字符串,short类型) 内部版本号标识您的应用程序的一个未发布的和发布的版本。...它存储在在应用程序的Info.plist为CFBundleVersion(Bundle version),可以看更多的key 参见图1展示的版本号和App Store应用程序的版本号,分别为1.3和201.4...确保CFBundleVersion(版本号)和CFBundleShortVersionString(编译号)如图3所示的键值在Info.plist里面 图3 在Info面板中版本号和编号...Updating CFBundleShortVersionString in Info.plist(s)......Also setting CFBundleVersion key (assuming it exists) Updating CFBundleVersion in Info.plist(s)...
在本文中,我将展示如何创建一个可访问的 SwiftUI 视图,既能显示应用图标和版本,又能在各种文本大小和外观下看起来都很好:获取应用图标构建视图的第一步是从主包中获取应用图标。...类似之前的步骤,我们需要读取应用 Info.plist 中 CFBundleShortVersionString 键的值:AppVersionProvider.swiftimport Foundationenum...") } return version }}如果你想在视图中包含版本号和构建号,可以检索 CFBundleVersion 键的值。...这对于用户(无论是内部测试人员还是外部用户)来说,是一种快速识别应用版本和变体的有效方法。我们通过从主包中检索 Info.plist 文件中的相关键值,获取应用图标。...接着,我们采用类似的方法,通过读取 Info.plist 文件中的 CFBundleShortVersionString 键的值,获取应用版本信息。
3.1 设置apple development 证书 在原来Xcode开发所在用户下,导出发布证书,如果要打企业包(299刀)和公司/个人版包(99刀),则两种证书都要导出,然后拷贝到Jenkins用户环境下...,双击安装到Mac 的钥匙串中。.../${APP_NAME}/Info.plist" if [ !...****************************" exit fi #取版本号 bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString..." "${project_infoplist_path}") #取build值 bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion
iOS 中的 CFBundleShortVersionString 与 CFBundleVersion iOS 开发中经常看到 CFBundleShortVersionString 和 CFBundleVersion...CFBundleShortVersionString CFBundleShortVersionString (String - iOS, OS X) 表示 bundle 发布版本号, 标识应 用的一个发布迭代...CFBundleVersion CFBundleVersion (String - iOS, OS X) 表示 bundle 构建迭代的版本号(发布与未发布), 命名规则与 CFBundleShortVersionString...相同, 并且只能包含数字 (0-9) 和 句点 (.) , 整数开头部分的 0 会被忽略,比如: 1.02.3 与 1.2.3 相同。...string for the bundle 简单来说, CFBundleShortVersionString 标识 bundle 的版本号字符串, 并且可以被本地化, 而 CFBundleVersion
setting(APP_NAME) 上,为此修改Info.plist中Bundle display name的值为 $(APP_NAME)。...把环境参数单独放在一个独立的头文件中,更加简洁,职能更加专一,也便于维护但是这种做法还不是最好的,因为还需要手动导入头文件,而且生产环境参数和开发环境参数是放在同一个文件中而是不是独立分开的,要想独立分开并且使用时又不用导入头文件可以通过...前面我们通过info.plist获取到了.xconfig文件中自定义的变量,再次我们同样通过info.plist来获取自定义的变量的值来当做宏使用,首先在info.plist中新建一个WEBSERVICE_URL...String, let currentBuildNumberString = dict["CFBundleVersion"] as? ...中的CFBundleShortVersionString和CFBundleVersion变量,并根据CONFIGURATION配置的是Release还是Debug来修改对应的BundleVersion,
准备条件 iMAC(要 Mac OS 系统,安卓 和 苹果 可以在同一台电脑上打包) xcode 最新版,要已安装对应的开发证书(生成一个 Ad-Hoc 类型的包就有了) brew(当前管理员账户安装)...源码管理,使用 账号 和 密码拉取代码(有可能会提示无法获取,你可以重启 jenkins 试试,如果还不行,重启电脑,如果还不行,自行解决) 3....scheme_name="你项目的scheme名称" # 工程中Target对应的配置plist文件名称, Xcode默认的配置文件为Info.plist info_plist_name="Info"...info_plist_path="$project_name/$info_plist_name.plist" bundle_version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString..." $info_plist_path` bundle_build_version=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $info_plist_path
一、参数支持 首先在 iOS 上很多的配置信息都是写在 info.plist 文件,所以一开始需要解决打包时支持动态修改 info.plist 的参数,这样有利于我们在输出不同环境的包配置,如:QA、.../usr/libexec/PlistBuddy -c "Set CFBundleVersion ${CFBundleVersion}" ..../Runner/Info.plist /usr/libexec/PlistBuddy -c "Print CFBundleVersion " ..../Runner/Info.plist 在 Mac 上其实本身就自带了满足需求的命令行工具:PlistBuddy, 如上命令所示 通过 Set 命令可以直接动态配置 plist 下的版本号、 code 和第三方...3、通过 xcodebuild 命令,如下开始编译 iOS 代码了,其中 $PWD 是所在工作目录: xcodebuild -workspace Runner.xcworkspace -scheme Runner
,都可以从 [[NSBundle mainBundle] infoDictionary] 获得,当前这里面还包含了app的其他信息如版本、app名称、设备类型、支持方向。。。...CFBundleIdentifier = "net.tan.xxx"; CFBundleInfoDictionaryVersion = "6.0"; CFBundleInfoPlistURL = "Info.plist...TanTest; CFBundleNumericVersion = 16809984; CFBundlePackageType = APPL; CFBundleShortVersionString...; CFBundleSupportedPlatforms = ( iPhoneSimulator ); CFBundleVersion...CFBundleIdentifier = "net.tan.xxx"; CFBundleInfoDictionaryVersion = "6.0"; CFBundleInfoPlistURL = "Info.plist
持续化集成工具——Jenkins Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。...同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。...这样Adhoc证书和签名文件就在Jenkins中配置好了,接下来我们只需要在item设置中指定相关文件即可。 回到我们新建的item,找到构建环境,按下图选好自己的相关证书和签名文件。...三. iOS自动化打包命令——xcodebuild + xcrun 和 fastlane - gym 命令 在日常开发中,打包是最后上线不可缺少的环节,如果需要把工程打包成 ipa 文件,通常的做法就是在.../${APP_NAME}/Info.plist" #取版本号 bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString
基本上开发过程中的问题都是可以借助开发工具和第三方工具帮助我们解决问题的。...我们在Xcode中添加脚本位置如下: 第一步:下载工具包 符号表工具下载链接 我使用的版本(符号表工具 '3.3.4') 检查自己的Java环境,我们在终端中输入 java -version...(CFBundleVersion), 如果你修改默认的版本格式, 请设置此变量, 如果不想修改, 请忽略此设置 # CUSTOMIZED_APP_VERSION="" # # # Debug模式编译是否上传...echo "Info.Plist : ${INFOPLIST_FILE}" # BUNDLE_VERSION=$(/usr/libexec/PlistBuddy -c 'Print CFBundleVersion...(CFBundleVersion), 例如: 1.0(1)) # if [ !
Version在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致,Build在plist中的key是“CFBundleVersion...这两个值都可以在程序中通过下面的代码获得: [[[NSBundle mainBundle] infoDictionary] valueForKey:@"key"] ### Archive后自动增长build...INFOPLIST_FILE} #increment the build number (ie 115 to 116) buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion...plist" exit 2 fi buildnum=$(expr $buildnum + 1) /usr/libexec/Plistbuddy -c "Set CFBundleVersion
原因在于macOS 中创建 NSViewController 不会自动创建 view.View默认也不会创建layer,所以需要自定义View....能够获取到模拟器的状态和Udid。...: infoDict[@"CFBundleName"] ; NSString *bundleShortVersion = infoDict[@"CFBundleShortVersionString..."]; NSString *bundleVersion = infoDict[@"CFBundleVersion"]; NSString *icon = ((NSArray...:appUrl]; } } 6、上架篇 向App Store的提审过程,被拒了两次,第一次是因为上架的APP必须是沙盒App,所以在项目内要添加沙盒相关配置 另外一个原因,是因为macOS从mojava
enterprise #fastlane gym --export_method app-store scheme_name = "你的scheme名字" #获取version和build.../#{scheme_name}/Info.plist", key: "CFBundleShortVersionString") build = get_info_plist_value(path.../#{scheme_name}/Info.plist", key: "CFBundleVersion") #导出路径 output_directory = "....继续回到localhost:8080中也能看到秘钥地址回到用户目录下了 接下来就是正常的安装插件和语言。 由于本地使用rvm来管理ruby,也是深坑一大堆,构建时会出现这些报错。...安装完成后,先去插件管理中 安装个 汉化 ? Screen Shot 2018-04-16 at 4.07.07 PM.png 配置一下中文 ?
所以采用 Xcode 的 xcodebuild 命令的 -exportArchive 指令来进行重签名,发现重签名的成功率和包体稳定性提高了很多。...解压游戏包,删除包内无用内容(.DS_Store,__MACOSX等),如需要,修改Info.plist参数和图标等资源 unzip "ipa路径" -d "目标路径" find -d "解压后的路径"...修改 xcarchive 内容 根据最后一步的 xcodebuild -exportArchive 命令,我们需要传一个 xcarchive 路径和 ExportOptions.plist 路径。...(.dylib)会被放到这个文件夹中。...重签名并导出 ipa 最后,只需要把 xcarchive 目录和 ExportOptions.plis 的内容修改成需要重签名包的内容,就可以利用 xcodebuild -exportArchive 命令来重签名和导出包体
PROJECT 里面是整个工程的配置文件;而 TARGETS 里面 包含了这个工程中不同的可执行程序的配置文件,每个target都代表了一个编译执行的程序,这个程序可以是一个可以运行的App,可以是一个测试...version & build:从名字上来看就可以很清楚的区分这两个字段的不同:一个是当前的版本号,对应 Info.plist 里面的CFBundleShortVersionString 字段;另一个是你当前版本的编译次数...,对应 Info.plist 里面的 CFBundleVersion 字段。...Custom iOS Target Properties:从上图中我们可以看出,Custom iOS Target Properties就是 Info.plist 里面的内容。...Utils:这个文件夹下主要放的是一些系统常用的工具类,例如:获取时间工具类,文件大小等; Supporting Files :这个文件夹下主要放的是系统生成的文件,比如:AppDelegate文件、info.plist
的示例 var plistPath = Path.Combine(pathToBuiltProject, "Info.plist"); var plist = new PlistDocument...// 增加字符串类型的设置 plist.root.SetString("fieldname", "value"); // 修改后的内容写回到文件Info.plist.../UUID,然后按回车键 一步到位 如果想要一步到位,导出xcode后自动执行Archive和生产ipa,可以写好shell脚本自动运行 Archive脚本 xcodebuild -project...-exportArchive -exportOptionsPlist xxx/Info.plist -archivePath xxx.xcarchive -exportPath ~/Desktop/..."Debug"); project.SetBuildPropertyForConfig(configGuid, "ENABLE_BITCODE", "NO"); 另外,对于XUPorter的导出插件和native
命令行编译 为了更好地了解编译过程,我们可以脱离Xcode IDE,在命令行编译该项目: 首先,在项目目录中查看Schemes: $ xcodebuild -list -project HelloWorld.xcodeproj...,可以直接从AppStore下载。...OTA部署 OTA部署支持使用HTTPS的方式部署和分发你的ipa包,一个示例OTA链接地址如下: itms-services://?...后记 本文从开发者的角度,介绍了iOS应用创建、编译、打包、测试、部署等方面, 从零开始构建并运行我们的第一个iOS程序。 既介绍了模拟器的安装测试方式, 也介绍了物理机上的打包和部署过程。...下一篇,我们将尝试从攻击者的角度,实际“破解”一个iOS应用,Stay Tuned!
: warning: Skipping code signing because the target does not have an Info.plist file and one is not being...我们在用pod命令安装库时,就是找到这个文件,获取地址下载库,并根据配置下载好依赖库和其它工程的配置。...: warning: Skipping code signing because the target does not have an Info.plist file and one is not being...pod install命令就是根据要安装的库的名字在这些目录中遍历,找到对应的配置文件后,解析里面的地址和配置进行下载。...Pod update命令是从远程库,把这些配置文件下载到本地的这个目录中,再install。
领取专属 10元无门槛券
手把手带您无忧上云