mapviewのannotation長押しでデフォルトのピンに戻ってしまう問題など
・mapviewのannotationを長押しで、なぜかデフォルトの赤いピンに戻る
→ MKPinAnnotationViewではなく、MKAnnotationViewを使う。
(※http://stackoverflow.com/questions/9275959/annotation-image-is-replaced-by-redpushpin-when-long-press-on-annotation)
・置いたピンを押しても、ウインドウが出てこない
→annotationに、少なくともtitleが設定されていないと、反応しなくなる。
Titaniumで作ったapkを、Google Playにアップしようとすると「apk をサーバーで処理できません」と言われる…など
まずは見にくいblogですみませんm(_ _)m
かなり小ネタですが…以下に書いていきます。
(この記事は @astronaughts さんの企画「Titanium mobile “early” Advent Calendar 2012」の27日目の記事です)
TitaniumでAndroid向けに書き出したapkをGoogle Playにアップすると、
何度やっても「apkをサーバで処理出来ません」と言われる…。
時間を変えて何度やってみてもダメで、違うプロジェクトだと大丈夫なので、
いよいよ中身を疑うことに。
色々比較していった結果…manifestファイルで、
のように、application nameをstringファイルから引っ張ってきているのですが、
その場合、ローカライズフォルダ(i18n)に、enフォルダが無いといけませんでした。
最初、ここをjaフォルダだけにしていたのですが(日本語向けしか考えていない内容だったので)、内容は全く同じで良いので、とにかくenフォルダは最低限必要なようです。
でないとエラーは出なく、ローカルでは問題無く動くのにストアにアップできないというapkになってしまう模様です…。
※2012/11/30追記
別の方より情報をいただいたのですが、あと、
platform/android/AndroidManifest.xml
に自前のマニフェストファイルを置いて作る事は多いと思いますが、
そこの中で、パーミッション部分をコメントアウトして残している部分を
消してみたら登録できるようになった、という事もあるようです。
//////////////////
あと記事にするまでもない、かなり小さい小ネタを…。
・1
当たり前と言えば当たり前なのですが、
ローカライズxmlの中では、ダブルクォーテーションはエスケープするように。
でないと、Androidは問題無いのですが、iOS環境でローカライズが効かなくなります。
・2
http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Cloud.Objects
の「Show Custom Objects」の取得方法が間違ってる!
ids:[saveCar1.id , saveCar2.id]
となっていますが、なんと、カンマ区切り文字列にして渡さないとだめでした。
ids:["111111, 222222"] みたいに…
//////////////////
※業務とは関係なく、趣味でTitaniumで作成したアプリをリリースしています、
厨二病ワードを共有、Twitterに投稿などが出来る「俺は厨二病」、
完全に趣味なアプリ「アニメデータベース&ランキング」
の2本を最近リリースしました、もしよければDLしてみてください!
複数の自作ANEを作る際の注意点
Flash Builder4.7のiPhoneシミュレーター起動に関して
起動させるのにいくつか必要だった点をまとめました。
・シミュレーターといえども、証明書、プロビジョニングファイルの指定は必要な模様。
・元々入っている、AIRのSDKが古い(初期状態では3.1が入っている模様)ので、
3.4込みのFlexSDKフォルダを作成する必要がある。
既存のFlexフォルダをコピー・リネームし、
そこにAirSDKフォルダの中身を全て上書きで良いが、
macだとフォルダ毎中身を統合しないで上書きになってしまうので、
http://atomic-lab.jp/flash/air-sdk-3-4-update.html
のようなコマンドで行うのが良いと思う。
(上書きでやりたければ、muCommanderの様なファイラーを使うのも手。
http://d.hatena.ne.jp/yohxx/20110707/1310054947)
この統合を行わないと、
http://forums.adobe.com/thread/1056428?tstart=0
にあるような、
「iOS Simulator Bridge (ISB) コンポーネントがインストールされていません。」という警告が自分の環境でも出てしまった。
※この統合を行うと、初期設定の際の表記もちゃんと3.4となる。
※あと、上記フォーラムに書いてあったのだが、現在のxcodeから、一番新しいバージョンのシミュレーター以外、手動でインストールするようになっているので、起動しようとしているバージョンが入っていない場合、当然ではあるが起動は出来ない模様。(Xcode→Preference→Downloadsタブ→Components より、DLできる)
自分はバージョン4以降は全て入れていたので、それで問題が起きているかどうかは確認出来なかったが…。
・自動的に起動はせず、iPhoneシミュレーター上のHOMEにアプリが入るだけなので注意。
(デバッグ実行の場合、プログレスバーが出て、起動を待っている状態になるので、
HOMEから自分で起動することでデバッグポイントなどに引っかかるようになる。
http://atomic-lab.jp/flash/ane-debug-iossim.html
の一番下にある、操作の動画にその一連の流れが載っている。
自分の環境でも、毎回、「シミュレートした App は終了しました」というアラートが2回出るが、「再起動」ボタンを押すことで、問題無くiPhoneシミュレーターが操作出来るようになった)
※追記
余談ですが、シミュレーターでANEを動作させたい場合、
に、
「iOS シミュレーター(AIR 3.3 以降でサポートされている iOS シミュレーター)上で実行されるネイティブライブラリを作成する場合、ターゲットタイプは「シミュレーター」を使用してください。」
と書いてあることなのですが、Xcodeで.a拡張子のライブラリを作成する際、ターゲットをsimulatorに変更する必要があります。
※枠の部分を変更。(この画像ではシミュレーター用ではなく、実機向けになっている、ということですね)
これをしないと、FlashBuilder上で、「missing required architecture i386..」と言ったエラーが出て、動作しませんでした。
Air for Androidで、インテントするだけのANEを作成しました。
https://github.com/kuniakisuzuki/ANE-SimpleIntent
にアップしました。
import jp.sikisize.SimpleIntent;
var extension:SimpleIntent = new SimpleIntent();
extension.intent("com.google.android.youtube");//Launch Youtube application
他のアプリケーションを立ち上げる必要があり作成しました。
引数(putExtra)を渡したり、そのパッケージが端末にあるかのチェックなどしていないので、
あまり使えないかと思いますが、
もしよければお使い下さい。m(_ _)m
FLASH CS6(Air for Android)で端末に書き出す時、「デバイスエラー:デバイスに十分な容量があるか確認して下さい」が出る
http://forums.adobe.com/message/3906566
のRepliesの1つめにあったが、
certificationファイル(FLASHの中から作れる、拡張子が.p12のファイル)を
使い回していたため起こっていた模様。
新規に作り直して、それでパブリッシュしたら問題なく書き出せた。