ページへ戻る

− Links

 印刷 

iOSでのANEの作成​/iOS側の作成 のバックアップソース(No.6) :: NJF Wiki

xpwiki:iOSでのANEの作成/iOS側の作成 のバックアップソース(No.6)

« Prev[5]  Next »[6]
ANEを作成するためには、iOS側のプログラムをまとめたスタティックライブラリ(.aファイル)が必要となります。その制作方法やテストの仕方をこちらでご紹介します。

この記事で使用しているXcodeのバージョンは9.2です。

*プロジェクトの作成 [#kc36aff3]

まずXcodeでテスト用にiOS端末上で実行するためのプロジェクトを作成します。
具体的には、ボタンを押すとアラート画面が表示されるアプリです。

まずXcode起動後にメニューからFile->New->Projectと選び、iOSタブから「Single View App」を選択します。

&ref(newProject.jpg,mw:480,mh:360);クリックで拡大

プロジェクト名などを指定します。ここでは「AneAlertSample」としています。Langageは「Objective-C」です。他の言語でもANEが作れるかも知れませんが、資料が一番多いObjective-Cが一番無難です。Teamの所には登録済みの開発者アカウントを入れておきましょう。

&ref(newProjectSetting.jpg,mw:480,mh:360);クリックで拡大

あとは適当な場所にプロジェクトを作成します。

プロジェクトが作成できたら、まずProjectの設定項目からInfoを選び、Deployment Targetを「8.0」などの低いバージョンに設定します。

&ref(projectInfo.jpg,mw:480,mh:360); クリックで拡大

これを行わず、最新のバージョンを指定したままだと、64bitのライブラリしか作成されなくなります。しかしAir SDKによるANE作成は現在(ver.28)のところ、64bitと32bitの両方が含まれているユニバーサルなライブラリにしか対応していません。そのため、64bitしか対応していない最新のバージョンではANE作成時にエラーが発生します。忘れずにターゲットに古いバージョンを指定するようにしてください。

次に「Build Settings」で「All」タブを選び、「Architectures」の各項目を設定します。

&ref(BuildSettings.jpg,mw:480,mh:360);クリックして拡大。

特に「Build Active Architectures Only」を「No」にする事を忘れないでください。これが「Yes」のままだと、テスト中のデバイスのArchitectureしか有効にならないので、64bitのみのライブラリがビルドされたりといったことがおこり、前述のユニバーサルなライブラリの問題が発生することがあります。

他の項目は基本的にデフォルト値のままで大丈夫です。

*テスト用ボタンの配置 [#q4eb0dfa]

ANEの作成はけっこう面倒です。それを何度もやらなくてすむように、iOS上でテストはできるだけ行ってから、ANEの作成にうつった方が効率的です。そのためのテスト用ボタンを設置します。

Xcodeでプロジェクトを作成すると、デフォルトでは「Safe area」というレイアウトを利用しています。しかし、Build TargetをiOS8にしていると、「Safe area」はiOS9からなので、エラーが発生します。プロジェクトを開いただけなら問題ないように見えますが、実行しようとしたり、「Main.storyboard」を表示しようとすると以下のようなエラーが出ます。

&ref(safeAreaError.jpg,mw:480,mh:360);クリックして拡大

テスト用のアプリでは、特に「Safe area」は利用しないので削除します。

そのために、まず「Main.storyboard」の「Safe Area」を選択します。

&ref(safeArea.jpg,mw:480,mh:360);クリックして拡大

次にXcodeのウインドウの右上のボタンを、次にその下のタブの一番左をアクティブにして、右側に各種情報が出るレイアウトにします。

&ref(rightTop_0.jpg,mw:480,mh:360);

すると右端中段に「Interface Builder Document」という項目が現れるので、「Use Safe Area Layout Guides」というチェックボックスのチェックを外します。すると「Safe Area」がなくなり、エラーも消えます。

&ref(safeAreaCheck.jpg,mw:480,mh:360);クリックして拡大

ファイルの同期がうまくいっていないのか、実際にビルドするとなぜかまたこのエラーが出ることがありますが、上記の手順を繰り返すとたいてい消えます。

次にテスト用のボタンを配置します。Xcode右下の部分の丸いアイコンのタブをクリックし、スクロールするとボタンがあります。

&ref(buttonTab.jpg,mw:480,mh:360);クリックして拡大

それを「Main.storyboard」のエディタにドラッグ&ドロップで配置します。
サイズもボタンの端をドラッグすると調整できます。
真ん中寄せなどをしない場合、アプリの表示は左上が基準になるので、画面の右や下の方は表示が切れることがあります。
そのため、ボタンは左上の方に配置すると便利です。

&ref(buttonLocate.jpg,mw:480,mh:360);

テスト用なので、レイアウトや表示にこだわっても仕方がありませんが、さすがにラベルは変えられるようになっていないと、複数ボタン配置してテストするときに不便なので変えておきます。
エディタ上のボタンを選択状態にして、右上端のくさび形のアイコンのタブを選択し、「Title」のテキストを変更すれば、ラベルが変更されます。

&ref(buttonLabel.jpg,mw:480,mh:360);

次にボタンを押したときの処理を定義します。
Xcodeのウインドウの右上にある丸いボタンを押して、StoryboardとViewController.mを両方表示します。

&ref(twoEditorBtn.jpg,mw:480,mh:360);

そして、ボタンをViewController.mの「@end」の上あたりにでも右クリックまたはコントロール+クリックでドラッグ&ドロップします。
すると以下のようなアクションの定義ウインドウが出ます。

&ref(actonDef.jpg,mw:480,mh:360);

Nameを「alertShowUp」とすると、その名前のメソッドがドラッグ&ドロップした場所に自動で挿入されます。
このメソッドがボタンが押されたとき(正確には押して離したとき)に呼び出されます。

動作確認のために、このメソッドにログ出力の処理を追加します。

 - (IBAction)alertShowUp:(id)sender {
     NSLog(@"alertShowUp");
 }

これで実行してボタンを押すと

 2018-01-05 21:49:46.619087+0900 AneAlertSample[30385:2700813] alertShowUp

などとXcodeの下部のログ表示部分に出力されれば、テスト用のボタンの配置は終わりです。

*ANE用のライブラリの作成 [#f803ea57]
このページの目的は作成したボタンを押すとアラート画面が表示されるようなテスト用アプリを作り、かつANE用のライブラリを作ることです。
このままこのプロジェクトに処理を書くこともできますが、そうするとあとでライブラリ製作用のプロジェクトを作って内容をコピーしなくてはいけなくなるため、面倒です。
はじめからライブラリ用のプロジェクトを制作し、それを先ほど制作したテスト用のプロジェクトにリンクさせた方が簡単です。
そのためにここでライブラリ用のプロジェクトを制作します。

まずXcode起動後にメニューからFile->New->Projectと選び、iOSタブから「Cocoa Touch Static Library」を選択します。

&ref(cctStaticLibrary.jpg,mw:480,mh:360);

この後のプロジェクトの作り方は「[[プロジェクトの作成>#kc36aff3]]」と全く同じなので、そちらを参考にしてください。ここではプロジェクトの名前は「anealert」としました。

また、ターゲットのバージョンや「Build Settings」なども「[[プロジェクトの作成>#kc36aff3]]」と同じように設定してください。

ちなみにライブラリプロジェクトをそのままビルドした場合はライブラリプロジェクトの設定が、ライブラリプロジェクトを他のプロジェクトにリンクさせた場合は親になっているプロジェクトの設定が適用されます。
混乱しないように、両方同じにしておくのが無難です。

ライブラリプロジェクトが作成できたら、一度Xcodeを終了させます。

再びXcodeを開き、ライブラリプロジェクトを参照する親プロジェクトであるAneAlertSampleを開きます。
開いたらライブラリプロジェクトanealertをAneAlertSampleのファイルが表示されている部分へドラッグ&ドロップします。

&ref(libraryDD.jpg,mw:480,mh:360);

するとライブラリプロジェクトが入れ子となって表示されるようになり、両方のプロジェクトのファイルが編集可能になります。

&ref(libLink.jpg,mw:480,mh:360);

ちなみに、Xcodeを再起動せず、ライブラリプロジェクトを開いたまま上の手順を行うと、「すでにプロジェクトが開いています」といった内容のエラーが発生し、ビルドも何もできない状態になります。そうなったらXcodeを一度再起動し、ライブラリプロジェクトは開かずに親となっているプロジェクトを開いてください。

最後にライブラリをリンクさせるため、親プロジェクトであるAneAlertSampleのTARGETSのAneAlertSampleの「Linked Frameworks and Libraries」にlibanealert.aを加えます。

&ref(libLinkTarget.jpg,mw:480,mh:360);クリックして拡大

そして、ヘッダーファイルが参照できるように、同じく親プロジェクトであるAneAlertSampleのTARGETSのAneAlertSampleの「Build Settings」の「User Header Search Paths」にライブラリプロジェクトであるanealertのヘッダーファイルがある場所を指定します。ダブルクリックして「+」ボタンを押した後ヘッダーファイルが入ったフォルダをドラッグ&ドロップすればフルパスが入るので便利です。

&ref(libHeader.jpg,mw:480,mh:360);

これで、ライブラリ開発とそれを使ったテスト用アプリの開発が一度にできるようになります。

ただし、まれにビルドしようとしたときにライブラリプロジェクトのエラーが表示されず「Build Faild」とだけ表示されることがあります。その場合は一度Xcodeを閉じ、ライブラリプロジェクトのみを開いてビルドし直せば、エラーの場所が表示されます。

*主処理の追加とアプリとしてのテスト [#n6d6c2ec]

&font(Red){作成中};

« Prev[5]  Next »[6]