Fastlane:将设备添加到配置的正确方法?

Posted

技术标签:

【中文标题】Fastlane:将设备添加到配置的正确方法?【英文标题】:Fastlane: proper way to add a device to provisioning? 【发布时间】:2016-09-23 17:21:44 【问题描述】:

我正在使用 fastlane 来处理配置。

这就是我所做的:

match nuke development 
match nuke distribution

然后在一个通道中,我需要为每个 bundleId 提供这个:

match(type: "development", app_identifier: "com.myCompany.myApp", force_for_new_devices: true)

当我想下载配置时,我有一个执行此操作的通道:

match(type: "development", app_identifier: "com.myCompany.myApp", readonly: true)

所有这些让我可以在 nuke 时已经在门户中的设备上正常工作和构建。

如果我想添加设备,如何正确更新配置?

我试过了:

match development --force_for_new_devices true -a com.myCompany.myApp

它不起作用。

我收到此错误:

Provisioning profile '82afbd5b-9f19-4c78-b3ac-56a3565ce3f2' is not available on the Developer Portal

每次我必须添加设备时,唯一有效的方法就是对所有内容进行核对并重新开始。

不用核弹就可以添加设备的正确方法是什么??

我使用的是 Xcode 8,我禁用了 fastlane 建议的自动配置。

【问题讨论】:

【参考方案1】:

从 fastlane 2.8 版开始,有一种通过命令行添加设备的新方法

fastlane run register_device udid:"1234…890" name:"My new iPhone"

刷新例如包含此设备运行的开发者配置文件:

fastlane match development --force


要获取已连接手机的 udid(序列号),只需运行命令 system_profiler SPUSBDataType | grep -A 11 -w "iPad\|iPhone\|iPad"

【讨论】:

【参考方案2】:

你调用fastlane命令注册新设备

# Simply provide a list of devices as a Hash
register_devices(
  devices: 
    'Luka iPhone 6' => '1234567890123456789012345678901234567890',
    'Felix iPad Air 2' => 'abcdefghijklmnopqrstvuwxyzabcdefghijklmn',
  
)

# Alternatively provide a standard UDID export .txt file, see the Apple Sample (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)
register_devices(
  devices_file: './devices.txt'
)

# Advanced
register_devices(
  devices_file: './devices.txt', # You must pass in either `devices_file` or `devices`.
  team_id: 'XXXXXXXXXX',         # Optional, if you're a member of multiple teams, then you need to pass the team ID here.
  username: 'luka@goonbee.com'   # Optional, lets you override the Apple Member Center username.
)

之后你需要打电话

match development --force_for_new_devices

通过使用 force_for_new_devices 参数,match 将检查自上次运行 match 以来设备计数是否发生变化,并在必要时自动重新生成配置文件。您还可以使用 force: true 在每次运行时重新生成配置文件。

2016 年 12 月 20 日更新 或者更直观的方式

 desc "Register new device"
  lane :register_new_device do  |options|
      device_name = prompt(text: "Enter the device name: ")
      device_udid = prompt(text: "Enter the device UDID: ")
      device_hash = 
      device_hash[device_name] = device_udid
      register_devices(
                       devices: device_hash
                       )
    refresh_profiles
  end

【讨论】:

我应该把那些register_devices 命令放在哪里?在Matchfile ? 我在 Fastfile 中。在我呼叫这条车道之后。 re your edit - 我猜refresh_profiles 是一条运行match 的车道,就像在这个线程中一样? github.com/fastlane/fastlane/issues/1999 是的,完全正确。它通过 Match 刷新所有配置文件 Debug、Adhoc、Appstore【参考方案3】:

更新:如果您尝试添加 iPhone XS 或 XS Max(或更新版本),您需要在第八位数字后添加破折号,否则将无法成功添加(因为这些的格式已更改两台设备,大概还有 2018 年的 iPad Pro)。例如,如果您的 UDID/序列号是 "123456789123456789123456",您需要将其添加为 "12345678-9123456789123456"

所以,要添加这些设备,您可以运行:

fastlane run register_device udid:"12345678-9123456789123456" name:"Bob's iPhone XS Max"

【讨论】:

【参考方案4】:

刚刚遇到这个问题...“refresh_profiles”命令引发了错误。可能会被弃用?这个脚本非常适合我:

desc "Register new devices"
lane :register do
  device_name = prompt(text: "Enter the device name: ")
  device_udid = prompt(text: "Enter the device UDID: ")
  device_hash = 
  device_hash[device_name] = device_udid
  register_devices(devices: device_hash)
  match(force: true)
end

【讨论】:

以上是关于Fastlane:将设备添加到配置的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何手动将现有的配置文件和证书添加到 fastlane 匹配?

Fastlane - 如何通过组将用户添加到 Testflight?

如何将设备添加到 Adhoc 分发配置文件

使用 fastlane 匹配方法在本地 iOS 设备上运行 react-native 应用程序

Fastlane 注释掉字符串中的引号

Fastlane 截图传送到 AppStore