如何使用 fastlane 为模拟器创建应用程序文件
How to create app file with fastlane for simulator
我需要使用 fastlane .app 文件(或者 .ipa 文件,如果可以的话)创建,然后我可以将其拖放到另一台计算机上的模拟器中。我尝试用 gym 或 xcodebuild 参数来做,但我不知道该怎么做。
目前我是这样做的:
在 XCode 我为模拟器构建应用程序
接下来我在 DerivedData (~/Library/Developer/XCode/DerivedData/Build/Products/Debug-iphonesimulator/)
中搜索应用程序文件
我把这个文件复制到别处
但我需要用 fastlane 来完成。
如您在 issues at fastline repo 中所见,您可以使用健身房来完成,但也许,使用 xcodebuild
会更好(示例):
xcodebuild -configuration Debug -target targetname -arch i386 -sdk iphonesimulator10.3
比搜索 ~/Library/Developer/Xcode/Archives/<date>
(或您用 -archivePath
指定的位置)和内部将是 xcarchive.
- 在查找器中导航到您的 .xcarchive 文件
- 右键单击 .xcarchive 文件和 select“显示包
弹出菜单中的“内容”
- 查找器将切换为显示 .xcarchive 的内容
文件。
- 导航到 Products/Applications
- 您的 .app 将位于 Products/Applications
来自 here.
Here is answer,对你有帮助。
更新:
如果你需要从命令行获取应用程序文件,你可以这样做:
mv /YourXCArchiveLocation/archive.xcarchive/Products/Applications/AppName.app /YourDesiredLocation/AppName.app
这是我使用的车道:
lane :generate_test_app do
xcbuild(
workspace: "MyApp.xcworkspace",
scheme: "MyApp",
configuration: "Debug",
xcargs: "-sdk iphonesimulator SYMROOT='/var/tmp/'"
)
end
它将在 /var/tmp/Debug-iphonesimulator/MyApp.app
中离开该应用程序
我用 build_app 做到了:
build_app(
scheme: scheme,
workspace: workspace,
configuration: build_configuration,
derived_data_path: output_path,
skip_package_ipa: true,
skip_archive: true,
destination: "generic/platform=iOS Simulator"
)
我认为如果你想使用健身房,你可以以此为基础。
棘手的部分是找到 .app 目录。这是我使用的:
Dir.mktmpdir do |dir|
xcbuild(
workspace: "#{project_name}.xcworkspace",
scheme: "#{project_name}",
configuration: "Debug",
xcargs: "-sdk iphonesimulator SYMROOT=#{dir}"
)
app_path = sh("find #{dir} -name *.app -type d").strip()
sh("mv #{app_path} #{options[:output_directory]}/#{app_identifier}.app")
end
我们通过以下 gym
调用实现了此功能:
archive_path = gym(
skip_package_ipa: true,
destination: "platform=iOS Simulator,name=iPhone 6",
configuration: "Debug",
build_path: "simulator_build"
)
这将在目录“simulator_build/”中生成一个 .xcarchive,其中包含一个模拟器兼容的 .app 文件。
archive_path
将是创建的 .xcarchive 包的绝对路径。
name=
需要匹配 xcrun simctl list
输出中显示的现有模拟器设备的名称。 iPhone 6
默认存在,所以它应该是一个安全的选项。
在将此文件拖到模拟器上进行安装之前,您需要使用 Gatekeeper 将其列入白名单:
spctl --add ~/project/simulator_build/Products/Applications/YourApp.app
如果您忘记了,您将收到“...无法打开,因为它来自身份不明的开发人员。”在模拟器中点击应用程序时出错。
如果您收到“...已损坏且无法打开。您应该将其移至废纸篓。”,说明 .app 自代码签名以来发生了一些变化。使用
codesign -vvv ~/project/simulator_build/Products/Applications/YourApp.app
查看自代码签名以来添加、删除或更改了哪些文件。
我需要使用 fastlane .app 文件(或者 .ipa 文件,如果可以的话)创建,然后我可以将其拖放到另一台计算机上的模拟器中。我尝试用 gym 或 xcodebuild 参数来做,但我不知道该怎么做。
目前我是这样做的:
在 XCode 我为模拟器构建应用程序
接下来我在 DerivedData (~/Library/Developer/XCode/DerivedData/Build/Products/Debug-iphonesimulator/)
中搜索应用程序文件
我把这个文件复制到别处
但我需要用 fastlane 来完成。
如您在 issues at fastline repo 中所见,您可以使用健身房来完成,但也许,使用 xcodebuild
会更好(示例):
xcodebuild -configuration Debug -target targetname -arch i386 -sdk iphonesimulator10.3
比搜索 ~/Library/Developer/Xcode/Archives/<date>
(或您用 -archivePath
指定的位置)和内部将是 xcarchive.
- 在查找器中导航到您的 .xcarchive 文件
- 右键单击 .xcarchive 文件和 select“显示包 弹出菜单中的“内容”
- 查找器将切换为显示 .xcarchive 的内容 文件。
- 导航到 Products/Applications
- 您的 .app 将位于 Products/Applications
来自 here.
Here is answer,对你有帮助。
更新: 如果你需要从命令行获取应用程序文件,你可以这样做:
mv /YourXCArchiveLocation/archive.xcarchive/Products/Applications/AppName.app /YourDesiredLocation/AppName.app
这是我使用的车道:
lane :generate_test_app do
xcbuild(
workspace: "MyApp.xcworkspace",
scheme: "MyApp",
configuration: "Debug",
xcargs: "-sdk iphonesimulator SYMROOT='/var/tmp/'"
)
end
它将在 /var/tmp/Debug-iphonesimulator/MyApp.app
我用 build_app 做到了:
build_app(
scheme: scheme,
workspace: workspace,
configuration: build_configuration,
derived_data_path: output_path,
skip_package_ipa: true,
skip_archive: true,
destination: "generic/platform=iOS Simulator"
)
我认为如果你想使用健身房,你可以以此为基础。
棘手的部分是找到 .app 目录。这是我使用的:
Dir.mktmpdir do |dir|
xcbuild(
workspace: "#{project_name}.xcworkspace",
scheme: "#{project_name}",
configuration: "Debug",
xcargs: "-sdk iphonesimulator SYMROOT=#{dir}"
)
app_path = sh("find #{dir} -name *.app -type d").strip()
sh("mv #{app_path} #{options[:output_directory]}/#{app_identifier}.app")
end
我们通过以下 gym
调用实现了此功能:
archive_path = gym(
skip_package_ipa: true,
destination: "platform=iOS Simulator,name=iPhone 6",
configuration: "Debug",
build_path: "simulator_build"
)
这将在目录“simulator_build/”中生成一个 .xcarchive,其中包含一个模拟器兼容的 .app 文件。
archive_path
将是创建的 .xcarchive 包的绝对路径。
name=
需要匹配 xcrun simctl list
输出中显示的现有模拟器设备的名称。 iPhone 6
默认存在,所以它应该是一个安全的选项。
在将此文件拖到模拟器上进行安装之前,您需要使用 Gatekeeper 将其列入白名单:
spctl --add ~/project/simulator_build/Products/Applications/YourApp.app
如果您忘记了,您将收到“...无法打开,因为它来自身份不明的开发人员。”在模拟器中点击应用程序时出错。
如果您收到“...已损坏且无法打开。您应该将其移至废纸篓。”,说明 .app 自代码签名以来发生了一些变化。使用
codesign -vvv ~/project/simulator_build/Products/Applications/YourApp.app
查看自代码签名以来添加、删除或更改了哪些文件。