2013-04-16 3 views
38

클라이언트의 경우 사용자 인터페이스에 Cordova (PhoneGap)을 사용하여 iOS + Android 앱을 개발했습니다. 이제,이 응용 프로그램의 업데이트로, 나는 Haxe로 작성된 게임을 추가하려고 시도하고 있습니다. 원래 게임은 Flash target으로 작성되었지만 Android and iOS에 대한 C++ 대상과 함께 작동하도록 업데이트했습니다.iOS 앱에서 Haxe 실행 - hxRunLibrary() 오류

Android에서는 액티비티를 사용하여 앱을 Cordova 앱과 통합하는 것이 쉬웠지만 (Haxe 부분은 별도의 활동으로 실행 됨) iOS에서 비슷한 결과를 얻으려면 몇 가지 문제가 있습니다.

지금까지 "nme build ios"를 할 때 NME가 XCode 프로젝트를 설정하는 것과 같은 방식으로 모든 hxcpp 코드를 생성했습니다. 내 코드에서 hxRunLibrary()을 호출했습니다. 게임을 실행하고 싶습니다. 나는 그것이 뭔가가있을 수 있습니다 생각

*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.' 

:

문제는 hxRunLibrary() 내 주요 응용 프로그램은 이미 인스턴스를 실행하기 때문에, 다음과 같은 오류와 함께 실패 자신의 UIApplication 인스턴스를 만들 것이다 Haxe가 그래픽에 사용하는 SDL을 사용하십시오. SDL은 주 기능에서 실행해야하는 Cocoa와 충돌을 일으키는 앱의 주요 기능에서 실행해야한다는 것을 알고 있습니다.

쉬운 방법이 있습니까? hxcpp 소스를 살펴 보았지만 UIApplication 관련 코드 또는 SDL의 입력 코드를 찾을 수 없었습니다.

아마도 누군가 나를 올바른 방향으로 가리킬 수 있습니다. 감사!

답변

1

코르도바는

같은 문제로 실행 더 큰 응용 프로그램의 일부로 통합 할 수있는 능력을 가지고 있습니다.

http://devgirl.org/2012/11/15/embed-cordovaphonegap-in-your-native-ios-app/ 이 문서 대신 당신은 IOS의 웹보기를 통해 웹보기에 그것을 포함하고 코르도바는 서브 뷰를 역할을 당신이 실제로 새 프로젝트를 만들 해달라고

도움이 될 것입니다.

3

음, 나는 Haxe에 대한 몇 가지 정보를 봤습니다. 내가 이해 한 것은 The Haxe가 당신을 위해 완성 된 어플리케이션을 프로듀스 할 것이라는 것입니다. 그래서 오류가 발생합니다.

그리고 UIApplicationMain 함수를 두 번 호출하여 문제를 시뮬레이트 할 수 있습니다.

제 생각에는 Haxe가 만든 souce 코드 파일에서 UIApplicationMain에 대한 코드를 제거해야합니다.