meiyaの勝手気ままなblog

日々、思ったこと、気になったことをツラツラとボヤいています。パソコン・鉄道・アニメ系の話も時々…

開発関連

[ リスト | 詳細 ]

記事検索
検索

全3ページ

[1] [2] [3]

[ 次のページ ]

前回、RealmをXcodeでしかもiOSアプリで使えるようにするための準備をお話しました。

今回は、Realmのモデルの作成方法になります。
モデルと言っていますが、いわゆるDBでいうところのテーブルを作成します。

①Xcodeより、File > New > File...を選択します。
 すると、問題なくRealmの導入が完了していれば、下の方に「Realm Model Object」というのが選べるようになっているはずです。
これを選択して、「Next」ボタンを押します。

②「ModelObjectClass」の所に、クラス名を記述します。
 そう、モデルはSwiftクラスで作成します。
 一応、Objective-Cでも作れますが、今回の目的から外れるので、スルーします。
 クラス名を記述したら、「Next」ボタン!

③保存先を聞かれます。
 モデルのクラスファイルが認識されるためにも、プロジェクト内のどこかに置きましょう。
 無難に他のSwiftファイルがある階層に入れておきましょう。

④中身を開くとこんな感じ。
 当たり前ですが、「dynamic var message = ""」の部分は、追加しました。
 ここに必要なカラムを定義していきます。
 ここで詳しく解説は致しませんが、文字列、数値、日付など一通り、他のDBと同じくデータの型やプライマリーキーなどの制約も付けられるようです。
 お試しであれば、とりあえず、適当に2つか3つ用意しておきましょう。

これでDBの準備も完了。あとは書き込み、読み込み、更新、削除といった操作ができるようになれば、問題ないでしょう。

しかし、今この操作の所でつまずいておりまして、ご紹介できるのはもう少し先かもしれません。。
モバイル開発において、データベースとしては、SQLiteが主流でした。
しかし、今では新しいモバイルアプリ開発向けデータベースが主流になろうとしています。
Realmです。

今回は、iOSアプリ開発用に、Realmのデータベースの使用準備について、記事に残したいと思います。
Realmを使えるようにする準備方法はいくつかあるのですが、試行錯誤の結果、Dynamic Freamworkを使った方法で何とか準備ができたので、そちらを解説します。

手順としては、以下のRealm公式サイトに載っている方法を基に行いました。

①上記サイトの「インストール」の所で最初「Dynamic Framework」のタブの内容が開かれてる状態かと思うので、その内容のなかの「最新版のRealm」のリンクをクリックすると、いきなりダウンロードが始まるので、それでRealmを入手します。

②ダウンロードしたファイルは、圧縮ファイルなので展開します。
 展開したものは、多分そのままでは「ダウンロード」フォルダにあるかと思うので、この先の手順のため、Macintosh HD直下など別の場所に移動します。
 展開しましたら、「realm-swift-◯.◯.◯」>「ios」>「swift-(バージョン)」まで辿ります。
swift-(バージョン)では、使用しているSwiftのバージョンを選びます。
「ターミナル」を立ち上げ、以下のコマンドを実行すると、Swiftのバージョンを確認できます。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -v


③Xcodeで、Targetsでプロジェクト名を選択し、Generalを選びます。
 Embedded Binariesのところに②で辿り着いた先にある、「Realm.framework」、「RealmSwift.framework」の2つをドラッグします。

④すると、ウィンドウが出てくるので、「Copy items if needed」にチェックを付けて、「Finish」ボタンを押します。

⑤続いて、GeneralからBuild Settingsに切り替え、Framework Search Pathsのところにある、DebugとReleaseに先程ドラッグしたファイルのパスを入力します。
ここでは、Macintosh HD直下のdatabaseフォルダを指定しました。

⑥Build Settingsから今度はBuild Phasesに切り替え、左側にある「+」クリックし、「New Run Script Phase」を選択します。

⑦すると、「Run Script」と新しく項目が現れるので、▶を押して展開し、Scriptを記述するエディター部に以下をそのままコピペしてください。

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"

⑧保存して準備は完了です。 
ここまででエラーなどは出ないはず…です。

次回からはいよいよRealmデータベースを使用してみます。
開発作業は、基本チームで連携しての作業となるので、一つのプロジェクトに複数の人間が関わることになります。
今回は、本格的なリリースに向けた開発作業…というわけではありませんが、他の人の環境にて、Xcodeで作ったiOSアプリのプロジェクトが実機で動かずハマったので、メモとして残したいと思います。

計画としては、プロジェクトをGitで管理するつもりであるため、そのためには複数の環境で同じプロジェクトが問題なく動作することが前提になります。
しかしながら、シミュレータでは動くものの、実機となるとビルドに失敗して、確認ができない状態。

最近になってiOSアプリの動作確認は、シミュレータに関しては、Developer Programに登録しなくてもできるようになりましたが、一応リリースのことも多少考えているため、やはりそれぞれの実機での確認は必要となります。

いつものようにGoogle先生に頼りながら、いろいろと徘徊していった結果。
なんとか解決しました。

おっと、その前にどのようなエラーが発生したのか言っていませんでしたね。
実機で動かそうとすると、下記のようなエラーが発生します。

Failed to create provesioning profile.
The app ID "xxxxxx" cannot be registered to your development team. Change your bundle identifier to a unique string to  try again.

これは、他の人と同じBundle Identifierを指定している場合、つまり重複している場合に発生します。
なので、開発中は、それぞれの環境で一意のBundle Identifierを設定します。

Project Managerでプロジェクトを選択し、General > identityのところにBundle Identifierはあります。


大抵は、「com.hogehoge.(アプリ名)」みたいな形式になっています。
基本的には(アプリ名)以外の部分を変えておきましょう。

また、本格的にリリースすることを計画している場合は、あらかじめリリース用のBundle Indentifierを決めておき、混在しないよう別管理しておくと安心です。

GW明けて、久しぶりの仕事で遭ったアクシデントです。
アクシデント…というほどのことではありませんが。。

Android Studioでプロジェクトを読み込んで、apkファイルを作ろうとしたら、ビルドエラーが発生。
エラーの内容は至って簡単で、存在しない変数名が記述されているよ〜というもの。
おそらく、誤ってBackSpaceキーを押してしまったために、1字不足となってたのでしょう。

なんてことはない、足してあげましょうということで、なんなく修正終了。
これでapkファイル作れると思っていたら、またエラー。
あれ?
何か見過ごしてたかなーと思って確認しましたが、まったく同じ内容のエラー。
エラーメッセージをダブルクリックすると、エラーの箇所のソースに飛んでくれるのですが、その飛び先は、まさに今直したばっかりの場所。

おい!どういうことだ!
何度か、画面に向かって独り言という名の文句をたれながら、格闘していましたが、何も変わらず。

下記3つはネットで見つけた、よくある対処法。
①こういう時は、まずプロジェクトをクリーンしてリビルド。→ダメ。
②Android Studio再起動。→ダメ。。
③じゃ、思い切ってPC再起動。→ダメ。。。

え〜!!どうすんだよこれ!!!
GW明け初日からこんなのにハマるのは正直、先が思いやられる…。

そんなことを考えながら、適当にAndroid Studioをいじっていたりしたら…
解決しました。。

こんな感じです↓
・まず、エラーを再現した状態で、プロジェクトをクリーンして、リビルド。
 →はい、当然エラーになりますね。
・続いて、そのエラーを修正して、もう一度プロジェクトをクリーンして、リビルド。
 →あれ?消えた。

わざとエラーを再現して、ビルド側に我に返ってもらうようにするわけですな。
こうして、無事にapkファイルを作ることができました。

クリーンリビルド、Andorid Studio再起動、PC再起動、どれ試しても症状が改善されない場合は、ダメ元で試してみてください。

一人でも多く、同じような症状で悩まされる人が減ることを祈って。。

今回も仕事上でちょっとハマったことも含めてのお話。

Androidへのアプリのインストールは、Android Studioなどの開発環境からのインストールの他、アプリケーションをパッケージ化した、apkファイルをadbコマンドを用いてインストールする方法もあります。

adbコマンドは、Android SDKのロケーションパスを環境変数に設定することで使えるようになります。(指定したパスにadb.exeが含まれているため)
今回は、adbコマンドを使えるようにする方法がメインではないため、割愛します。
ここから先は、adbコマンドが使えること前提で話を進めます。

adbコマンドでのインストールは、下記のように記述します。

adb install (ファイル名).apk

ポイントとしては、このコマンドを実行する際は、コンソール(Windows:コマンドプロンプト、Mac:ターミナル)で、目的のapkファイルがあるディレクトリにたどり着いておくことです。
もう少し噛み砕くと、例えば、インストールしたいアプリのapkファイルが、「C:\android\app」のパスにある場合、コンソールで「C:\android\app」に移動してからインストールを実行するという具合です。

ちなみに既にインストールされているアプリをアップデートしたい場合は、

adb install -r (ファイル名).apk

単純にinstallの後ろに-rを追加しただけです。

これで、アプリのインストールもアップデートも無事にできてめでたしめでたし…といかず、こんなエラーが出る場合もあります。

INSTALL_FAILED_INVALID_URI

上記エラーが出た場合、Android機器のインストール先となる、「/data/local/tmp」の場所の編集権限がないためにはねられている可能性があります。
事前にパーミッションを確認しておきましょう。

もし権限がない場合は、chmodコマンドで一時的に権限を付与します。

chmod 777 /data/local/tmp

これでインストール(またはアップデート)が無事にできましたら、パーミッションを元の状態に戻しておきましょう。
同じくchmodコマンドを使います。

開く トラックバック(11)

全3ページ

[1] [2] [3]

[ 次のページ ]


よしもとブログランキング

もっと見る

[PR]お得情報

衛生対策製品クレベリンの姉妹ブランド
クレベ&アンドハンドジェルが新登場
今だけ。お試しキャンペーン実施中!
ふるさと納税サイト『さとふる』
最大10万円分旅行クーポンが当たる!
≪10月31日まで≫今すぐ応募!
抽選で150,000名様に当たるチャンス!
マツモトキヨシで期間中何度でも使える
100円引きクーポン<Yahoo! JAPAN>

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事