MacやXcodeを知らないやつが始めるXamarinアプリ開発 – 証明書発行 その3

「証明書発行 その2」の続きで、デバイスの登録です。
デバイスを登録するためには、UDIDと呼ばれるIDが必要ですが、iTunesを使えば簡単に確認できます。
まず、MacbookにiPhoneを接続します。その後、iTuneを起動し、画面左上のiPhoneマークをクリックします。
020
接続しているiPhoneの情報が表示されますので、「シリアル番号」の部分をクリックします。すると「シリアル番号」の部分が「UDID」に代わるので、文字列をコピーしておきます。
021
ブラウザに戻り、左側のメニューから「Devices」-「All」をクリックし、タイトルの「iOS Certificates」の右側にある「+」をクリックします。
022
今回は手持ちのiPhoneだけ使用するので、「Register Device」の「Name」に装置名を、「UDID」にiTunesで表示したUDIDを入力します。
(もう一つ「Regiester Multiple Devices」がありますが、こちらは複数のデバイス情報をファイルに保存しておき、まとめて登録するときに使用します。)
023
024
入力が終わったら、ページ下側にある「Continue」ボタンをクリックします。
最後にProvisioning Profilesです。
左側のメニューから「Provisioning Profiles」-「All」をクリックし、タイトルの「iOS Provisioning Profiles」の右側にある「+」をクリックします。
025
Developmentから端末の種類として「iOS App Development」を選択します。
026
※Distributionという選択肢もありますが、これは正式版としてアプリケーションを配布するときに選択します。
027
入力が終わったら、ページ下側にある「Continue」ボタンをクリックします。
次に、作成対象とするアプリケーションのApp IDを選択し、ページ下側にある「Continue」ボタンをクリックします。
028
アプリケーション配布時に使用する証明書を選択し、ページ下側にある「Continue」ボタンをクリックします。
029
配布対象のデバイスを選択し、ページ下側にある「Continue」ボタンをクリックします。
030
作成したProfileに対する名前を入力し、ページ下側にある「Continue」ボタンをクリックします。
031
作成したProfileを「Download」ボタンをクリックしてダウンロードします。
032
いろいろ作成したファイルのうち、PKCS #12形式(.p12)の証明書とProvisioning ProfileをWindows端末にコピーします。
(VSTSのビルドタスクで使用します)
ようやく準備が整いました。次からはVSTSのビルド環境を作成していきます。

MacやXcodeを知らないやつが始めるXamarinアプリ開発 – 証明書発行 その2

「証明書発行 その1」の続きで、アプリケーションIDの登録です。
Apple Developer Programのサイトで「Certificates, IDs & Profiles」内の左側のメニューから「Identifiers」-「App IDs」をクリックし、タイトルの「iOS App IDs」の右側にある「+」をクリックします。
014
App ID Descriptionの「Name」欄にアプリケーション名を入力します(一覧に表示する名称ですので、適当で構いません)。
015
App ID SuffixからアプリケーションIDの指定方法を選択します。「Explicit App ID」はアプリケーションIDをユニークに指定するときに使います。「Wildcard App ID」はワイルドカード(‘*’)を使って複数のアプリケーションIDをまとめて管理するときに使います。ここでは「Explicit Add ID」を使います。
016
App Servicesでは、作成するアプリケーションで使用したい機能があればチェックボックスをONにします。
017
入力が終わったら、ページ下側にある「Continue」ボタンをクリックします。
入力内容の確認画面が表示されるので、「Register」ボタンをクリックします。
018
019
区切りがいいので、続きは次回に

MacやXcodeを知らないやつが始めるXamarinアプリ開発 – 証明書発行 その1

開発環境が準備できたら、アプリのビルドや配布に必要なProvisioning ProfileとPKCS #12形式(.p12)の証明書を作成します。
全体概要としては、少し古いのとAdobeのサイトですがw、こちらが参考になりました。
〇Adobe Developer Connection
 iPhoneアプリの開発方法 for Flash Professional CS5 前編(http://www.adobe.com/jp/devnet/flash/articles/iphone_flash_1.html
まず開発者の登録から行います。
Apple Developer Programのサイトで「メンバーセンター」に移動します。
001
左側のメニューから「Certificates, IDs & Profiles」を選択します。
002
左側のメニューから「Certificates」-「All」をクリックし、タイトルの「iOS Certificates」の右側にある「+」をクリックします。
003
Developmentから「iOS App Development」を、Productionから「App Store and Ad Hoc」を選択し、ページ下側にある「Continue」ボタンをクリックします。
004
005
署名証明書の発行リクエストファイル(CSR file)ページの下側にある「Continue」ボタンをクリックします。
006
Finderから「アプリケーション」-「ユーティリティ」-「キーチェーンアクセス」を起動します。
007
008
メニューから「キーチェーンアクセス」-「証明書アシスタント」-「認証局に証明書を要求」をクリックします。
009
証明書に関する情報として、メールアドレスと通称を入力し、「要求の処理」から"ディスクに保存"を選択し、「続ける」ボタンをクリックします。
010
保存するファイルの名前と保存場所はそのままで、「保存」ボタンをクリックします。
(デスクトップにリクエストファイルが保存されます)
011
要求ファイル作成完了メッセージが表示されるので、「完了」ボタンをクリックします。
ブラウザに戻り、「Choose File…」ボタンをクリックし、先ほどデスクトップに保存したリクエストファイルを選択します(ファイル選択→「選択」ボタンクリック)。
012
ページ下側にある「Continue」ボタンをクリックします。
証明書が作成されるので、「Download」ボタンをクリックします。
013
長いので続く・・・

MacやXcodeを知らないやつが始めるXamarinアプリ開発 – 前準備

私は今までMacやiPhoneとかいったApple製品は、昔iPod miniを使ってただけですが、最近Xamarinが流行っているようで、どうやって開発していくのかな?と興味が湧いたので、少し触ってみることにしました。

今回お試しするにあたって、以下の内容を前提として触ってみました。
・VSTSでの自動ビルドに対応する
 自分がお試しをするときの視点として「業務で開発するときにどうすればいいのか?」がメインになります。
 となると、自動ビルドは外せない要素になります。(実際にできるかどうかは別にして(;´Д`))
・できるだけMacを使わない
 Macはほとんど触ったことがないのと、(仮に)会社で開発するとなったにしてもMacでの開発はないかなという想定で。
 自動ビルド対応するのに、Macを都度触るのはナンセンスだと思いますし。
・実機での確認ができるようにする
 実機で動作させてなんぼのもんです。

最初にXamarin開発環境の整理から。
・IDEとしてはXamarin StudioとVisual Studioがある
・Xamarin.iOSやXamarin.MacのビルドにはMac(+Xcode)が必要
・エミュレータはVisual StudioだとWindows/Android/iPhoneが動かせる
 MacだとAndroidとiPhoneが動かせる
 (BootCampとかParallel Desktop併用でWindowsは実機確認)
結局、WindowsでもMacでもクロスプラットフォーム開発できるということです。
今回は前提に挙げたとおり、Windowsメインで触っていきます。

Windows環境にVisual Studio 2015をインストールしますが、Xamarin関連はインストールの種類を「カスタム」にしないとインストールできません。
インストールを進めると「機能の選択」画面が表示されます。そこで「クロスプラットフォームモバイル開発」の中にある「C#/.NET(Xamarin v4.1.1)」をONにします。
!!インストール選択画面
※Androidエミュレータ「Microsoft Visual Studio in Xamarin Emulator」もONになりますが、実際に使用するにはHyper-Vが使用可能であることなど、システム要件を満たす必要があります。
 「Visual Studio Emulator for Android のシステム要件」(https://msdn.microsoft.com/ja-jp/library/mt228280.aspx

ここからは、りんごさん関係の環境準備です(;^ω^)
まずはMacとiPhoneが必要になりますが、さすがに新品を購入する財力はないので、某オークションでMacBook AirとiPhone6を購入しました。
MacとかiPhoneって中古でも高いんですね・・・

実機が届いたところで、環境構築を始めます。
最初にApple IDの登録が必要です。さらに、クレジットカードかキャリア決済情報の登録も必要です。
登録内容に住所もあるんですが、ここで登録した住所は「正確に」覚えておいてください。理由は後ほど出てきます。

続いて、開発者用プログラムである「Apple Developer Program」(ADP)に登録します。
登録パターンとして個人と組織があり、組織として登録するには「D-U-N-S Number」を取得する必要があります。
https://developer.apple.com/programs/enroll/jp/

今回は個人として登録しました(現時点では、年間11,800円必要です(:_;))。が、自分はここで引っかかりました・・・。
なぜかステータスがPendingのまま数日経過しても変わらず、詳細情報も表示されず、メールの通知もなく・・・。

ネットで検索してみると、「Contact Usにリクエスト投げたほうが早い」ということで、ネットの翻訳機能に頼りまくって「ステータスがPendingのまま変わらない」と送信。
すると、翌日に「住所がApple IDの内容と異なるから、正しい内容を送って」と英文メールが来ました。
対応はえぇ、でもApple IDでも住所登録してるのに、ADPでも住所登録する必要ないんじゃ?と思いながら、訂正メールを返信。
翌日にAppleからメールが到着したので、「もう対応したのか!」と思いながら本文を開くと、日本語で住所間違ってるご指摘メール(アドレスが英文メールとは違う)。しかも英文メールと相違項目が微妙に違う。
どういう連携してるんだろう?とか思いながら、一応日本語メールにも返信。
さらに翌日(Contact Usリクエストから3日目)に「登録完了した」とのメールが到着。しかも英語と日本語の2つw。アドレスが異なるので、別々に対応してる様子。
こんなそんなで、ADPのサイトに無事ログインできました。

続いて、MacBook Airに開発環境のXcodeとXamarin Studioをインストールします。
その後、Visual Studioからのリモートビルドのために、リモート接続を許可しておきます。
(Visual Studioから接続するときは、リモート接続を許可したユーザでログインします)
101

020_2

さらに、アプリケーション配布用にいろいろファイル(証明書とか)を作成する必要があるのですが、Mac関連で詳細手順をメモしておきたいのと、あまりにもいろいろファイルを作成しないといけないので、ちょっと分けます。

VSTSでビルドしたXamarin.Androidアプリが起動しないとき

Visual Studio Team Services(VSTS)でXamarinの自動ビルドとかHockeyAppとかについて確認しているところですが、すぐにまとめられるネタが出てきたのでちょっと公開します。
(今回のネタはAndroidですが、りんごさん系は全くの初心者なこともあり、ハマリ続けてます(;´Д`))

Xamarinで簡単なアプリを作成して、とりあえずVisual StudioからAndroidエミュレータでちゃんと動くことを確認。→VSTSのビルド定義でビルド成功まで確認。→HockeyApp経由でアプリをインストールして起動したところ、一瞬画面が生成されたあとにアプリが終了。
再度エミュレータで実行してもちゃんと動作するし、VSから実機デバッグしても動作するという状態。Xamarin初心者(というか、スマホアプリ初心者)なのに・・・と頭を抱えてましたが、「Android Device Monitor」という便利な機能に出会いました。
トレース情報や、Thread/Heap/ネットワーク状態/システム情報/ファイル一覧などいろんな情報が確認できるデバッグツールなのですが、自分はエミュレータだけで動作するものだと思い込んでましたが、実機に対しても使えるツールです。

とりあえず、Device Montorを起動して、HockeyApp経由でインストールしたアプリを実機で実行してみました。 ※画面下側にトレースログが出力されるのですが、システム全体の情報が出力されるので、青枠のところにフィルタする単語(アプリ名とか)を入れないと収拾がつきません。

001

すると、赤い文字でこんな怪しいログが・・・。
Assembly ‘assemblies/[アプリ名].dll’ is located at a bad address 0xa16f6bb7

どうも、DLLをローデングするアドレスの調整がうまくできてないようです。「こんなの初心者の領域を完全に超えてるよ・・・」と思いながら、インターネット様のお力をお借りすると、「VSTSでのビルド時に、zipalignを有効にすればいい」とのこと。
VSTSのビルド定義で、APKファイルへの証明書埋め込みタスクで「Zipalign Option」枠に「Zipalign」があるので、有効にしてビルドを再実行です。

002

・・・今度はビルドがエラーに(;´Д`)

003

(ログ出力が化けてるのはご愛嬌ということで)

「ANDROID_HOME」が定義されていないということなので、環境変数にandroid sdkへのパス(64bitOSのデフォルトだと「C:\Program Files (x86)\Android\android-sdk」)をセットして、VSTSのビルドエージェントを再起動(※コマンドプロンプトから起動している場合は、コマンドプロンプト自身も再起動しないと、変更した環境変数が反映されません)して、ビルドを再実行です。

・・・同じエラーが(;´Д`)
もう一度インターネット様のお力をお借りすると、「PATHに%ANDROID_HOME%\toolsが設定されていないとだめだよ」とのこと。「エラーメッセージおかしい!」と思いながらPATHに追加して、ビルドエージェント再起動→ビルド再実行すると、ようやく正常にビルド完了。
実機にインストールして起動すると、ちゃんと実行できるようになりました。

Xamarin.iOSでもいろいろハマってるので、後でVSTS+Xamarin+HockeyApp全体を通した環境構築の概要とかをまとめてみたいなと思います。(ハマってるところが解決できるのがいつになるかが怪しいので、まとめられる時期も不明です(;´Д`))