web-dev-qa-db-ja.com

プロビジョニングプロファイルのコマンドライン更新

私はこれで何も見つけることができませんでした(たぶん間違った検索用語を使用しているだけかもしれません。):
アプリの合理的な継続的統合設定を構築しようとしています。本当に賢明な実装を行うには、ビルドサーバーがAppleの使用済みプロビジョニングプロファイルを自動的に更新できる必要があります。 X-Codeオーガナイザーの機能に似ていますが、コマンドラインを介して自動的に行われます。
それが可能かどうかの手がかりはありますか?

49
LordT

ここに私のbashスクリプトがあります。スクリプトの最初の引数($ 1)は新しいプロファイルの場所です。

rm -Rf ~/Library/MobileDevice/Provisioning\ Profiles/*
cp "$1"/*.* ~/Library/MobileDevice/Provisioning\ Profiles/

基本的に、その〜/ Library/MobileDevice/Provisioning Profiles /フォルダーにあるものはすべて、ビルドに使用できます(Xcodeに表示されます)。

CIシステムの立ち上げを検討している場合は、最近、Hudsonを使用して、スライドとメモを作成することについて講演しました over here 。質問がある場合、私のメールは私のサイトにあります。

54
James J

更新:Cupertinoは最新のiTunesで動作しなくなります。代わりに sigh を使用して調べてください


このコマンドラインインターフェイスのようなサウンドは、大きな時間の助けになります。

https://github.com/nomad/cupertino

これにより、すべての配布プロファイルをダウンロードできます(@tdubikに感謝)。

ios profiles:download:all --type distribution

もう1つの方法は、デバイス用にビルドできるエンタープライズ開発ライセンス($ 300 /年)を使用することですwithoutプロビジョニング!したがって、アプリをビルドして、Apple Devセンターに移動したり、新しいデバイスを登録したりすることなく、デバイスに送信できます。

これにより、アプリをアプリストアに配布することはできませんが、クライアント向けに大量のアプリを構築する開発会社の場合、「構築してクライアントに送信」プロセスをかなり簡単にすることができます。これがAppleの正当な使用ポリシーに含まれているかどうかはわかりませんので、そのオプションを検討する前にそれを確認してください。しかし、プロトタイプなどについては検討する必要があるかもしれません。実際に出荷する場合は、開発者プログラムのライセンスを取得してもらいます。

16
Brad Parks

https://github.com/lacostej/Apple-dev からApple_dev_center.rbを使用してみてください

Apple開発者Webサイトからの情報を解析し、プロファイルをダウンロードして適切な場所に自動的にコピーします。

1
coffeebreaks

Sigh は、プロビジョニングプロファイルを管理できます。ただし、既に自分で取得したプロファイルのインストールはサポートしていません。しかし、私は彼らの ダウンロードしたプロファイルを実際にインストールする方法のソース を見ることがまだ価値があると感じました。

ありがたいことに、これは James Jの答え と非常によく似ています。

def self.install_profile(profile)
  UI.message "Installing provisioning profile..."
  profile_path = File.expand_path("~") + "/Library/MobileDevice/Provisioning Profiles/"
  uuid = ENV["SIGH_UUID"] || ENV["SIGH_UDID"]
  profile_filename = uuid + ".mobileprovision"
  destination = profile_path + profile_filename

  # If the directory doesn't exist, make it first
  unless File.directory?(profile_path)
    FileUtils.mkdir_p(profile_path)
  end

  # copy to Xcode provisioning profile directory
  FileUtils.copy profile, destination

  if File.exist? destination
    UI.success "Profile installed at \"#{destination}\""
  else
    UI.user_error!("Failed installation of provisioning profile at location: #{destination}")
  end
end

このローカルインストールを実行するスクリプトがあります。

#!/bin/bash -euo pipefail

BASH_SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

cd "$BASH_SOURCE_DIR"

# by default bash passes the glob characters if nothing matched the glob
# disable that
# http://stackoverflow.com/a/18887210/9636
shopt -s nullglob
# this creates a proper bash array, which we need since our profiles
# have funny characters in them
MOBILE_PROVISIONS=(*.mobileprovision)
# re-enable default nullglob behavior
shopt -u nullglob

# On a brand new machine that has never run any app on a development device
# the ~/Library/MobileDevice/"Provisioning Profiles" directory doesn't exist
mkdir -p ~/Library/MobileDevice/"Provisioning Profiles"

for mobileprovision in "${MOBILE_PROVISIONS[@]}"
do
  uuid=$( ./uuid-from-mobileprovision.bash "${mobileprovision}" )
  cp "${mobileprovision}" ~/Library/MobileDevice/"Provisioning Profiles"/"${uuid}".mobileprovision
done

これは別のuuid-from-mobileprovision.bash 脚本:

#!/bin/bash -euo pipefail

if [ ! -f "${1}" ]
then
  echo "Usage: $0 <path/to/mobileprovision/file>" 1>&2
  exit 1
fi

UUID=$( grep --text --after-context=1 UUID "${1}" | grep --ignore-case --only-matching "[-A-Z0-9]\{36\}" )
if [ -z "${UUID}" ]
then
  echo "Invalid mobileprovision file: ${1}" 1>&2
  exit 2
else
  echo "${UUID}"
fi
1
Heath Borders

私はいつかこの作品を作ろうとしていました。ついにできました!!

Fastlaneため息を使用して、必要な暫定プロファイルのみをダウンロードしてインストールできます。

fastlane sigh renew --adhoc -n "provisional_profile_name"
--app_identifier "your_app_identifier" -u "Apple_login _username" --ignore_profiles_with_different_name

注:このコマンドには、システムに既にインストールされているアプリの暫定プロファイルが必要でした。それ以外の場合はエラーがスローされました。

provisional_profile_name =プロファイル名の名前だけで、拡張子は不要です。

0
Vineeth