4

私はアンドロイドでphonegapプロジェクトを持っています。これはうまくいきますが、phonegap Web サイトでコンパイルすると、ios バージョンでいくつか問題が発生します。

したがって、xcodeシミュレーターを使用してxcodeを使用しようとしましたが、次のエラーが発生しました:

2013-04-03 21:29:27.261 Assas[2339:c07] Multi-tasking -> Device: YES, App: YES
2013-04-03 21:29:28.455 Assas[2339:c07] [LOG] true
2013-04-03 21:29:28.940 Assas[2339:c07] -[__NSCFArray    dataUsingEncoding:allowLossyConversion:]: unrecognized selector sent to instance 0x8939150
2013-04-03 21:29:28.942 Assas[2339:c07] *** Terminating app due to uncaught exception     'NSInvalidArgumentException', reason: '-[__NSCFArray dataUsingEncoding:allowLossyConversion:]:     unrecognized selector sent to instance 0x8939150'
*** First throw call stack:
(0x14c012 0x25a2e7e 0x1d74bd 0x13bbbc 0x13b94e 0x163b0 0x16243 0x5bbdb 0x5b32c 0x5aedd     0x5b075 0x5af93 0x25b66b0 0x1125765 0xcff3f 0xcf96f 0xf2734 0xf1f44 0xf1e1b 0x33d37e3     0x33d3668 0x387ffc 0x214c 0x20a5)
libc++abi.dylib: terminate called throwing an exception

Android プロジェクトの www フォルダーのコンテンツを取得します。config.xml と cordova jsfile を変更するだけです。

両方のプロジェクトで phonegap 2.4.0 を使用しています

編集:

エラーは Others Sources/main.m にあります

#import <UIKit/UIKit.h>

int main(int argc, char* argv[])
{
    @autoreleasepool {
        int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
        return retVal;
    }
}

6行目

ありがとう

4

3 に答える 3

0

あなたのアプリケーションは自動参照カウント (これは新しい) を使用していますが、Phonegap はまだそれをサポートしていません。解決策は次のとおりです。

1. プロジェクトのビルド設定に移動し、自動参照カウントをオフにします。ビルド設定 - ユーザー定義 - CLANG_ENABLE_OBJC_ARC - YES から NO に変更

2. 危険/悪いが、エラーを解決する: @autoreleasepool を削除します。コードは int main(int argc, char* argv[]) { int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); return retVal; }

于 2013-04-03T23:49:56.710 に答える
0

コルドバの JavaScript は、Android と ios で異なります。したがって、www をコピーするときは、android の cordova.js を ios の cordova.js に置き換えてください。

于 2013-04-03T20:37:08.957 に答える
0

私にとっては、プラグインの JavaScript ファイルでプラグインのパラメーターの順序を並べ替えましたが、iOS コードにそれらの変更を反映していませんでした。プラグイン パラメータで文字列、long、および int を組み合わせて送信しています。

// Old javascript
cordova.exec(success, fail, "MyPlugin", "PluginMethod", [0, 758493037474, "String"]);

// New javascript
cordova.exec(success, fail, "MyPlugin", "PluginMethod", ["String", 0, 758493037474]);

バックエンド コードも必ず更新してください (当たり前ですよね!!!)

// Old objective C
int myid              = [command.arguments objectAtIndex:0];
double mydouble       = [[command.arguments objectAtIndex:1] doubleValue];
NSString *mystring    = [command.arguments objectAtIndex:2];

// New objective C
NSString *mystring    = [command.arguments objectAtIndex:0];
int myid              = [command.arguments objectAtIndex:1];
double mydouble       = [[command.arguments objectAtIndex:2] doubleValue];
于 2013-12-05T21:51:49.340 に答える