为了使用第三方开源库,我尝试使用Hyperloop。我想使用的库是甜警报iOS。
这个图书馆有一个swift文件。我已经把这个文件放在我的项目主文件夹中的src目录中(它必须在src文件夹中吗?)我可以在我的项目中使用其他文件夹吗?子目录呢?)。
根据钛的文件:
在src目录中找到的任何*.swift文件都将自动编译。
在我的应用程序中,当我做这样的事情时:
var UIView = require('UIKit/UIView');
Ti.API.info('UIView => ' + UIView);它起作用了。但是,如果我试图要求在快速文件中的任何类,我会得到一个错误,它找不到体系结构x86_64模块。
var sweetAlert = require('SweetAlert');
var cancelAnimatedView = require('CancelAnimatedView');在查看SweetAlert源代码时,我还注意到SweetAlert类是open,而其他类只是普通类:
open class SweetAlert我不是一个快速的开发人员,所以我不知道这意味着什么。
我在这里错过了什么?
编辑
一些进展..。因此,我发现我需要一个appc.js文件来定义src框架工作和MyFramework的名称。而且,我所做的require应该与快速文件的文件名相匹配。现在,当我编译时,我看到了一些关于快速编译的更有趣的输出,但是得到了一个错误:
[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
我已经清除了快速文件中的所有脚本,并将其缩小为以下失败脚本:
导入基础导入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(!)准备好生产应用了吗?
发布于 2017-09-12 16:14:37
当我创建一个简单的Swift类并将其包含在一个钛/Appcelerator项目中时,我会收到一个类似的错误,而appc.js文件正是如何在稀疏文档中显示出来的。只要我不引用Swift文件中的类,该项目将在没有问题的情况下编译并在Xcode模拟器中运行。如果我在项目中引用该类,则会出现错误。基于编译日志,Swift文件确实编译到项目中,但是类似乎没有正确地链接到“需要”-ing到JavaScript代码中。
当我在网上搜索解决方案时,同样的问题到处都会出现,钛/Appcelerator团队从未提出过解决方案。我尝试过TitleSDK6.0.1、6.1.2和6.2.0,结果都是一样的;我尝试将Swift代码添加到现有的项目和新的项目中;我还卸载和重新安装了钛/Appcelerator。(我甚至尝试过在没有运气的情况下运行他们的示例应用程序!)
当我使用本机框架(如UIKit )时,Hyperloop确实可以工作,但它似乎还没有为第三方框架和类的生产应用做好准备。
我希望我的发现能帮助您和其他人调试项目,但不幸的是,我认为我将无法在此之外提供太多帮助。
https://stackoverflow.com/questions/44816745
复制相似问题