Appcelerator Hyperloop - использование сторонней библиотеки swift

Я пытаюсь использовать Hyperloop для использования сторонней библиотеки с открытым исходным кодом. Я хочу использовать библиотеку Sweet Alert iOS.

В библиотеке есть быстрый файл. Я поместил этот файл в каталог src внутри главной папки моего проекта (должен ли он быть внутри папки src? Могу ли я использовать другую папку в моем проекте? Как насчет подкаталогов?).

Согласно документации Titanium:

Все файлы *.swift, найденные в ваших каталогах src, будут автоматически скомпилированы

В моем приложении, когда я делаю что-то вроде этого:

var UIView = require('UIKit/UIView');
Ti.API.info('UIView => ' + UIView);

Оно работает. Но если я пытаюсь потребовать какой-либо из классов в файле swift, я получаю сообщение об ошибке, что он не может найти модуль архитектуры x86_64.

var sweetAlert = require('SweetAlert');
var cancelAnimatedView = require('CancelAnimatedView');

Глядя на исходный код SweetAlert, я также заметил, что класс SweetAlert open в то время как другие классы - просто обычные классы:

open class SweetAlert

Я не быстрый разработчик, поэтому я не знаю, что это значит.

Что мне здесь не хватает?

РЕДАКТИРОВАТЬ

Некоторый прогресс... Итак, я обнаружил, что мне нужно иметь appc.js файл, который определяет src каркасная работа и название для MyFramework. И что require Я должен соответствовать имя файла swift. Теперь, когда я компилирую, я вижу несколько более интересных выводов о быстрой компиляции, но получаю ошибку:

[INFO]  Generating metabase for swift MyFramework /Users/ophir/Documents/Appcelerator_Studio_Workspace/HyperloopTest1/src/SweetAlert.swift

2017-06-29T14:43:44.061Z | ERROR  | An uncaught exception was thrown!
Cannot read property '1' of null

2017-06-29T14:43:44.064Z | ERROR  | Cannot read property '1' of null 

РЕДАКТИРОВАТЬ 2

Я очистил весь скрипт в файле swift и сузил его до следующего неудачного скрипта:

Фонд импорта Импорт UIKit Импорт QuartzCore

public enum AlertStyle {
    case success,error,warning,none
    case customImag(imageFile:String)
}

class SweetAlert: UIViewController {
}

class AnimatableView: UIView {
    func animate(){

    }
}

Если я удалю func animate() { } это не подведет. Даже если эта функция находится внутри этого одного класса SweetAlert, она не будет выполнена. И из того, что я прочитал, это довольно стандартный быстрый код.

Так что это заставляет меня задуматься - готов ли Hyperloop 2.0.0(!) К производственным приложениям?

1 ответ

Я получаю аналогичную ошибку при создании простого класса Swift и включении его в проект Titanium/Appcelerator с файлом appc.js, настроенным так, как это показано в разреженной документации. Проект будет компилироваться без проблем и запускаться в Xcode Simulator, если я не ссылаюсь на класс из файла Swift. Если я ссылаюсь на этот класс в проекте, возникает ошибка. Основываясь на журнале компиляции, файлы Swift компилируются в проект, но классы, по-видимому, в конце не связываются должным образом для "необходимости" в коде JavaScript.

Когда я ищу в Интернете решения, эта же проблема обнаруживается повсюду, и команда Titanium/Appcelerator никогда не представляет решение. Я пробовал Titanium SDK 6.0.1, 6.1.2 и 6.2.0 с одинаковыми результатами; Я попытался добавить код Swift в существующие проекты и в новые; Я также удалил и переустановил Titanium/Appcelerator. (Я даже попытался запустить их пример приложения без удачи!)

Hyperloop работает, когда я использую собственные фреймворки, такие как UIKit, но, похоже, он не готов для производственных приложений для сторонних фреймворков и классов.

Я надеюсь, что мои открытия помогут вам и другим в отладке проектов, но, к сожалению, я не думаю, что смогу предложить большую помощь помимо этого.