2013-04-16 15 views
38

Đối với khách hàng tôi đã phát triển một ứng dụng iOS + Android sử dụng Cordova (PhoneGap) cho giao diện người dùng. Bây giờ, như một bản cập nhật cho ứng dụng này, tôi đang cố gắng thêm một trò chơi được viết bằng Haxe. Ban đầu trò chơi được viết cho số Flash target, nhưng tôi đã cập nhật trò chơi để làm việc với các mục tiêu C++ cho Android and iOS.Chạy Haxe từ ứng dụng iOS - lỗi hxRunLibrary()

Trên Android, thật dễ dàng để tích hợp ứng dụng này với ứng dụng Cordova sử dụng (phần Haxe chạy dưới dạng hoạt động riêng), nhưng tôi gặp phải một số sự cố khi đạt được kết quả tương tự trên iOS.

Cho đến nay tôi đã cố gắng bao gồm tất cả hxcpp mã được tạo trong dự án của tôi (giống như cách NME thiết lập dự án XCode khi bạn thực hiện "i xây dựng") và tôi gọi số hxRunLibrary() từ mã của mình khi Tôi muốn trò chơi chạy.

Vấn đề là hxRunLibrary() dường như muốn tạo UIApplication dụ riêng của mình, mà không thành công với các lỗi sau, kể từ khi ứng dụng chính của tôi vẫn đang chạy một thể hiện:

*** 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.' 

Tôi nghĩ rằng nó có thể có một cái gì đó để làm với SDL, mà Haxe sử dụng cho đồ họa. Từ những gì tôi hiểu SDL cần phải chạy từ các chức năng chính của ứng dụng, mà tạo ra một cuộc xung đột với Cocoa mà cũng cần phải chạy từ chức năng chính.

Có cách nào dễ dàng để giải quyết vấn đề này không? Tôi đã xem xét các nguồn hxcpp, nhưng không thể tìm thấy mã liên quan UIApplication hoặc bất kỳ mã nhập nào cho SDL.

Có lẽ ai đó có thể chỉ cho tôi đúng hướng. Cảm ơn!

Trả lời

3

Vâng, tôi đã googled một số thông tin về Haxe. những gì tôi hiểu là The Haxe sẽ prouduce một ứng dụng hoàn thành cho bạn. đó có nghĩa là nó bao gồm các chức năng chính. Đó là lý do tại sao lỗi xảy ra.

Và bạn có thể mô phỏng sự cố bằng cách gọi hàm UIApplicationMain hai lần.

Theo ý kiến ​​của tôi, bạn phải xóa mã về UIApplicationMain khỏi tệp mã souce do Haxe sản xuất.