1

Titanium SDKを使用して、クロスプラットフォーム(Android-ios)モバイルアプリケーションを構築しようとしています。私は長い間iOS用にそれを構築する機会がありませんでした、私はそれをテストするために私のWindowsとAndroidの組み合わせを使用しただけで、それはAndroidシステムでうまく機能します。しかし、iOS用のMacでビルドしようとすると、このメッセージが表示され、アプリケーションがすぐにシャットダウンします。

アプリケーションがキャッチされない例外「NSInvalidArgumentException」でクラッシュしました。

私は関連するコードを提供できないので、例外は私のjavascriptコードの問題を示しておらず、私は確かにネイティブのios固有のコードを記述していなかったので、何をすべきかわかりません。

私がここで見つけたいくつかの投稿から、私が試したものは次のとおりです。

  • TitaniumStudioを再起動します
  • プロジェクトをクリーンアップする
  • ResultSet、およびDBオブジェクトを使い終わっ たら、必ず閉じてください(ここで提案されているように:トピック
  • 3.0.0バージョンと2.xxバージョンの両方でコードをテストします

この問題があれば、どのように解決したかについてのアドバイスをお待ちしています。前もって感謝します!

更新: 問題は次のとおりでした:私はhasOwnPropertyTitanium UI要素を呼び出しましたが、iosバージョンでは、これらの要素にはこの関数がありません(間違いがなければ、すべてのjavascriptオブジェクトにこの関数があるので奇妙です)。

同様の問題がある場合は、この記事を読むことをお勧めします。mr.VVoosの回答に加えて、私が抱えていた問題を回避するのに大いに役立ちます。

4

1 に答える 1

1

私は長い間TitanimとiOSとAndroidで開発しています。通常、コードのiOS部分とAndroid部分の間には多くの違いがあります。

ほとんどの場合、この例外は、呼び出されたクラスで使用できない操作が呼び出されたことを意味します。(Javaでは、これは次のことを意味します:Class.method()-> Classにはmethod()というメソッドがありません)。

アプリをデバッグモードで実行してみることができます(iOSシミュレーターの場合)。Androidと比較してiOSをデバッグする大きな利点があります。通常、iOSシミュレーターは例外があると停止し、例外の原因となったJavaScriptコードを表示します。残念ながら、これは常に機能するわけではなく、シミュレーターでのみ機能します。

これでそれ以上の情報が得られない場合は、次のようにすることができます。-app.jsに移動し、最初の行の1つにブレークポイントを設定します。-アプリをデバッグモードで起動します。-アプリがクラッシュするまで、毎回このブレークポイントに移動します-エラーを検出したり、詳細情報を提供したりできる場合があります。

最後のヒント:プラットフォーム固有の部分があるかどうかコードを確認してください。(AndroidインテントやiOSでは利用できないもののように)。

これは非常に醜い可能性があることを私は知っていますが、iOSからAndroidに移行する際に、これらの厄介な問題の多くを解決する必要がありました。

于 2013-02-18T19:12:14.050 に答える