ラベル iOS の投稿を表示しています。 すべての投稿を表示
ラベル iOS の投稿を表示しています。 すべての投稿を表示

2019年8月26日月曜日

iOS証明書を更新する

どうも、俺です。

1年ほど前にiOS PUSH通知証明書の更新方法をメモしましたが、今日はiOS証明書の更新方法をメモ。

全体の流れは、


  1. 証明書署名要求を作成
  2. Apple Developer Programで新しい証明書を作成
  3. .p12ファイルを作成
  4. プロビジョニングプロファイルを更新
です。


手順1: 証明書署名要求を作成

キーチェーンアクセス.appを起動し、メニューにある
「キーチェーン」→「証明書アシスタント」→「認証局に証明書を要求...」をクリック
・ユーザーのメールアドレス ... Apple Developer Programのメールアドレス
・通称 ... なんでもOK
・CAのメールアドレス ... 空白
・ディスクに保存 ... チェック
・鍵ペア情報を指定 ... チェック
で「続ける」をクリックし、適切なディレクトリに保存します。


鍵ペア情報は「2048ビット」「RSA」でOK。
保存するファイル名を変更していなければ、対象のディレクトリにCertificateSigningRequest.certSigningRequestというファイルが生成されます。

手順2: Apple Developer Programで証明書を作成

Apple Developer Programにログインし、
メニュー→「Certificates」をクリックし選択。


↑の画像にある「+」ボタンをクリックし新しい証明書作成画面に移ります。

続いて「iOS App Development」を選択。
これは開発用の証明書です。
AdHoc用や本番用の証明書を作る場合は「iOS Distribution (App Store and Ad Hoc)」を選択。


次に、手順1で作成した証明書要求の CertificateSigningRequest.certSigningRequest を選択します。


すると、次の画面で作成された証明書情報が見れますので、右上の「Download」をクリックし保存します。



これで新しい証明書が作成され、PCにも保存されました。
DLした証明書をダブルクリックし、キーチェーンアクセスに登録しておきます。



古い証明書は有効期限まで使えますが、もう新しい証明書を使ってしまってOKです。

手順3: .p12ファイルの作成

個人で開発されてる方はここの手順は不要です。
チーム開発されてる場合などは、.p12ファイルを作成 & 共有して使うと良いです。

まず、キーチェーンアクセスを起動し、登録したての新しい証明書を選択します。


左側にある「▶」をクリックし、「秘密鍵」と書かれた鍵マークのある列を選択します。
そこで右クリックし「" ****** を書き出す..."」をクリックし、適切な名前をつけて.p12ファイルを保存します。
これで.p12ファイルが出来上がります。


手順4: プロビジョニングプロファイルを更新

証明書が新しくなると、プロビジョニングプロファイルを更新する必要があります。
※有効期限が切れると使えなくなるため



既存のプロビジョニングプロファイルを「Edit」から編集し、新しい証明書を選択して作り直します。





以上でぇぇぇえす。

2018年7月25日水曜日

iOS PUSH通知証明書を更新する

どうも、俺です。

 1年毎にやってくるPUSH通知証明書の更新ですが、毎回手順を調べるのも面倒なのでメモ。
 全体の流れは、

  1. 証明書署名要求を作成
  2. Apple Developer Programで証明書を作成
  3. .p12ファイルを作成
  4. .pemファイルを作成
です。

【手順1: 証明書署名要求を作成】

キーチェーンアクセス.appを起動し、メニューの
「キーチェーン」→「証明書アシスタント」→「認証局に証明書を要求...」をクリック。

・ユーザーのメールアドレスを入力...適当なメアド
・通称 ... 何でもOK
・CAのメールアドレス ... 空白
・ディスクに保存 ... チェック
・鍵ペア情報を指定 ... チェックしない
で、「続ける」をクリックし、保存先を決めてファイルを保存。

CertificateSigningRequest.certSigningRequest というファイルが生成されます。


【手順2: Apple Developer Programで証明書を作成】

Apple Developer Programにログイン。
メニューにある「Certificates」→「All」をクリック。


画面右上にある「+」ボタンをクリックし証明書作成を開始する。

次の画面で、「Production」内にある「Apple Push Notification service SSL (Sandbox & Production)」にチェックを入れ「Continue」をクリック。
※開発版の場合は「Develop」内にある「Apple Push Notification service SSL (Sandbox)」にチェックを入れる。



次の画面で、PUSH通知証明書を更新するアプリのApp IDを選択し「Continue」。



次の画面はそのまま「Continue」をクリック。



次の画面で、先ほど生成した CertificateSigningRequest.certSigningRequest を選択し「Continue」。



すると、証明書が作成されるので「Download」をクリックし保存する。


【手順3: .p12ファイルを作成】

手順2で作成した証明書ファイルをダブルクリックし、キーチェーンアクセスに登録します。

次にキーチェーンアクセス上で、登録した証明書を「右クリック」→「"Apple Push Services: XXX.XXX.XXX"を書き出す...」をクリックして適当なディレクトリに保存します。
パスワードが必要な場合は設定して下さい。次の手順4で利用します。

すると、証明書.p12のようなファイル名でファイルが書き出されます。
ファイル名は半角英数で aps_prod.p12 のように変えておいたほうが良いです。



【手順4: .pemファイルを作成】

多くのPUSH通知証明書更新について書かれたサイトは、
手順3で作成した「.p12ファイルをサーバーにあげて使って下さい」、とあるのですが、
一応、.pemファイルを作ってそれをサーバーにUPする手順も書いておきます。
(...というか、その方法でしかやった事がない)

ターミナルを開き、手順3で作成した.p12ファイルがあるディレクトリまで移動し、
以下のコマンドを叩きます。

$ openssl pkcs -in aps_prod.p12 -out aps_prod.pem -nodes

これで、.pemファイルが生成されます。
※手順3でパスワードを指定していた場合は、パスワードを問われます。



手順は以上。
作られたaps_prod.pemをサーバーにアップしてPUSH通知が届くかテストして作業完了です!


以上でぇぇぇぇぇぇぇす。

2017年9月26日火曜日

Xcode8のままiOS11ビルドをする

どうも俺です。


iOS11がリリースされ、それに合わせてXcode v9もリリースされました。
Xcodeをバージョンアップするためには、
先にMacOSをバージョンアップする必要があって...いつもながら超面倒です。

Xcode8のままだとiOS11用にビルドできない...とお思いのみなさん、
裏技を使ってそのままiOS11ビルドできます。

※動作保証はできませんので、自己責任で行って下さい。


(1) Xcode 9をダウンロードする
https://developer.apple.com/download/more/
からXcode 9をダウンロードし解凍します。
結構時間かかります。

(2) Xcode 9.appを適当なディレクトリへおく
/Application/Xcode-9.app などへ移動させましょう。

(3) Xcode 8を適当な名前にリネームしておく。
仮に、Xcode-8.app としておきましょう。

(4) Xcode 8.appにXcode 9.app内にあるiOS11ディスクイメージのシンボリックを貼る

$ sudo ln -s /Applications/Xcode-9.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.0\ \(15A5278f\) /Applications/Xcode-8.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.0

(5) Xcode 8.appを再起動
再起動したら準備OK。iOS11端末をつなげてビルドできます。




ここに答えが。
Use Xcode 8 with iOS 11 | stack overflow



以上でぇぇぇぇす。

2017年8月8日火曜日

linker command failed with exit code 1が出た時の解決方法案

どうも、俺です。

Xcodeで開発してて目にすると1時間はその解決に費やしてしまうこともある地獄のエラー文言。
そう、それが
linker command failed with exit code 1


※Xcode 8.3.3

今日はこのエラーが出た時「これやったら直った」というあらゆる手段をお伝えします。


■プロビジョニングプロファイルは正しく設定されているか

人により設定方法は様々ですが、僕の場合、
・General>SigningにあるAutomatically manage signingのチェックをはずす

・Build Settings内、
 ProvisioningProfile (Deprecated)とProvisioning Profileの2箇所に適切なプロビジョニングプロファイルを設定。
 Code Signing Identityに正しい証明書を設定。
 最後にDevelopment Teamにチーム名を設定。

としています。
このミスの際は、ちゃんと「プロビジョニングプロファイル間違えているよ」というエラーが出ることが多い...。


■Enable Bitcodeの設定を間違えていないか

Build Settings>Build Options内にあるEnable Bitcodeが「Yes」になっているとアカン場合がある。
組み込んだフレームワークがbitcodeとやらに対応していないかもしれないので、速攻「No」に設定し直す。




■存在しないリソース(画像etc)を取り入れようとしていないか

Build Phases>Copy Bundle Resources内に存在しないリソースがないか要チェック。
無いものが含まれている場合は削除します。



■Deployment Targetを間違えていないか

General>Deployment InfoにあるDeployment Targetに無茶な値を入れていないか。
古すぎるターゲットなどに設定している場合は、よく考えて適切な値にします。



■Info.plistの設定Target Membershipは大丈夫か

Info.plistを選択してTarget Membershipにチェックが入っているとアウト。
チェックを外します。



■Xcodeを再起動しよう

この方法を使うと90%の確率でビルドが成功します。
試してみる価値あり。



■Mac本体ごと再起動しよう

この方法を使うと50%の確率でビルドが成功します。
試してみる価値あり。




上記以外でこのエラーの対処方法があれば教えてください。


※※※2017.08.18追記
このエラーが出た時に詳細ログが見れないのでモヤモヤしてたのですが、ログを見る方法が分かりました!
command+8 !!
LogNavigatorというやつらしいです!
これで具体的にエラー内容確認できます!


以上でぇぇぇぇす。

2015年9月4日金曜日

[Xcode] コマンドラインからipaファイルをエクスポートする

どうも、俺です。

 今日は、アーカイブされたiOSアプリをコマンドラインから.ipaファイルをビルドする方法をメモ。


いつも通りProduct>Archiveします。




オーガナイザーが起動するので、対象のビルドされたアプリを選択しCtrl押しながらクリックし「Show in Finder」を選択。




Finderが起動するので、ファイルのパスとファイル名をメモ。




次に、XcodeのBuild Settings>Code Signingからビルドに使用するプロビジョニングプロファイルの名称(通称?)をメモ。




今回の場合、Releaseビルドをしようと思うので「KabekeriSasuke3_AppStore」をメモ。


あとはビルドコマンドを打ち込むだけ。

xcodebuild -exportArchive -archivePath '.xcarchiveファイルのパス' -exportPath '出力先のファイルパス' -exportFormat ipa -exportProvisioningProfile 'プロビジョニングプロファイルの名称'

なので、今回の場合はこうなります。
xcodebuild -exportArchive -archivePath '/Users/USER_NAME/Library/Developer/Xcode/Archives/2015-09-04/Sasuke3 2015-09-04 16.07.xarchive' -exportPath '/Users/USER_NAME/Desktop/Sasuke3App' -exportFormat ipa -exportProvisioningProfile 'KabekeriSasuke3_AppStore'

こうするとDesktop上にSasuke3App.ipaファイルが出来上がります。


なぜこのような面倒なことをするのか、と言うと理由は2つ。
1つは、例えば受託案件でクライアント所有の証明書やプロビジョニングプロファイルでビルドする際、先方のiTunesConnectのアカウント情報を知らないとXcodeからDistributionビルドできません。
そういう場合に、上の方法でビルドします。

もう1つは、自社アプリをAdHocビルドしようとしたときに、オーガナイザで選択するプロビジョニングプロファイルが「XC Ad Hoc: xxxx〜....」というファイルしか選択できないときがあります。(ありました。)
なぜそうなってしまうのか未だ原因は分かっていませんし、そのプロビジョニングプロファイルでもビルド出来るのですが、
何かしっくりこないので、そういう場合にコマンドラインからビルドしました。

XC Ad Hoc: 〜プロビジョニングプロファイルについて何か知っている方いらっしゃったら教えてください〜m(__)m

以上でぇえぇぇす。

2015年1月8日木曜日

64bit(arm64)対応するとJSONKitがエラー[iOSアプリ]

どうも、俺です。

Xcode開発でアーキテクチャにarm64を追加すると
組み込んだ3rdパーティ製ツールのJSONKitからエラーが出てビルドできません。



githubを見ると、JSONKitはかなり長い間更新が止まっており
arm64アーキテクチャに対応していないようです。

この場合は、
該当のエラーが出ている箇所にマウスポインタを併せてクリックし、
エラーを修正してしまえば対応できます。


エラー箇所は2箇所あります。


または、
元のJSONKitをフォークして64bit対応したソースが公開されているので、
そちらでも対応出来ると思います。(※未確認)


以上でぇぇぇぇぇぇす。

2014年10月2日木曜日

Xcode6(v6.0.1)でアーキテクチャarmv7sがはずされてしまう。

どうも、俺です。
しばらくぶりのブログです。忙しかったです。


さて、iOS8もリリースされXcodeも新たに6系が出てきました。
が、これまで通りの設定のままXcode6でビルドすると、armv7sでビルドができません。

これは、TARGETS>Build Settings>Architectures>Architecturesのデフォルトの設定にある
Standard Architectures (armv7, arm64)
が原因です。

これでは、いくらValid Architecturesにarmv7sを書いても
そのバイナリは生成されません。


対応するには、
先ほどのArchitecturesを選択し、
Other...
から「armv7s」を追加しましょう。


あとは、Valid Architecturesにarmv7sを記入しておけばOKです。


以上でぇぇぇぇぇぇす。

2014年1月15日水曜日

Xcode cannot run using the selected device

どうも、俺です。

Xcodeでビルドしようとした際に
「Xcode cannot run using the selected device」というエラーが出てビルド出来ないあなたへ。

"Xcode cannot run using the selected device"に苦しんだ数日間 - マキシぐんだんの中の人のブログ
に同様の問題の対応方法がありますが、僕の場合は少し違いました。

Info.plistの"Target Membership"にチェックが入ってしまっていたことが原因。
チェックを外して解決しました。


以上でぇぇぇぇぇぇす。