在使用Appcelerator SDK 5.5.1.GA执行构建时,在调用xcodebuild之后会抛出错误,文本无法读取属性' emit'为null。它过去一直工作到上周。它只发生在我制作AdHoc或生产IPA时。它在模拟器中启动没有任何问题。
如果我通过Studio或使用控制台进行操作,就会发生这种情况。如果社区中的任何人遇到过这个问题,请告诉我。如果我使用的是旧的SDK,如5.5.0.GA,那么构建工作正常。
XCode:7.3.1 节点:0.12.7
答案 0 :(得分:0)
尝试升级到较新版本的npm(3.x)。我已经看到了其他非Appcelerator项目的问题。
答案 1 :(得分:0)
您可以通过终端尝试使用以下命令并清除构建“Project>> Clean”
另外,我发现你使用的是相当旧版本的Ti SDK,Xcode和节点。所以你可以更新你的环境,然后尝试一下。 - https://platform.appcelerator.com/#/product/cli
希望这有帮助。
答案 2 :(得分:0)
我终于成功了,没有迁移我的所有环境。只需更新Appcelerator CLI,Alloy和Node
首先更新您的Appcelerator CLI
sudo npm install -g appcelerator
appc setup
然后你需要更新Alloy 1.8.0 +
sudo npm install -g alloy
接下来修改项目以反映Alloy 1.8.0先决条件:http://www.appcelerator.com/blog/2016/03/alloy-1-8-relocates-i18n-and-platform-directories/
- >将您的/ i18n和/ platform目录移动到/ app / i18n和/ app / platform
最后重新启动计算机。
PS这是我的新配置:
答案 3 :(得分:0)
除了我的其他开发人员提到的上述过程之外,以下过程也可以在不对环境进行任何更改的情况下工作。这将需要两阶段构建。
供参考,我们可以使用此链接作为参考:
a Rotate
transform
要解决此问题,您可以从终端
启动构建appc run --build-only -T dist-adhoc --project-dir ~/Code/MyApp
一旦构建开始,让它通过并等待
调用调用xcode
并抛出错误。抛出错误后,转到以下文件夹:
建立/ iphone /建造/产品/唱片集-iPhone
在那里你会找到APP文件和DSYM文件。如果没有,请等待2-3分钟,然后完成XCode构建的后台进程。看到这两个文件后,在这种情况下打开SDK(5.5.1.GA)的_build.js。您可以在构建开始时找到控制台中显示的路径。
打开_build.js文件并转到以下函数
iOSBuilder.prototype.run = function (logger, config, cli, finished)
在那里你会找到一个系列,其中包含所有函数调用。在这里,您需要进行以下更改:
function (next) {
cli.emit('build.pre.construct', this, next);
},
// initialization
//'doAnalytics',
'initialize',
'loginfo',
//'readBuildManifest',
//'checkIfNeedToRecompile',
//'initBuildDir',
/*
function (next) {
cli.emit('build.pre.compile', this, next);
},
function () {
// Make sure we have an app.js. This used to be validated in validate(), but since plugins like
// Alloy generate an app.js, it may not have existed during validate(), but should exist now
// that build.pre.compile was fired.
ti.validateAppJsExists(this.projectDir, this.logger, ['iphone', 'ios']);
},
// xcode related tasks
'createXcodeProject',
'writeEntitlementsPlist',
'writeInfoPlist',
'writeMain',
'writeXcodeConfigFiles',
'copyTitaniumLibraries',
'copyTitaniumiOSFiles',
'copyExtensionFiles',
'cleanXcodeDerivedData',
// titanium related tasks
'writeDebugProfilePlists',
'copyResources',
'encryptJSFiles',
'writeI18NFiles',
'processTiSymbols',
// cleanup and optimization
'removeFiles',
'optimizeFiles',
// provide a hook event before xcodebuild
function (next) {
cli.emit('build.pre.build', this, next);
},
// build baby, build
'invokeXcodeBuild',
*/
// provide a hook event after xcodebuild
function (next) {
cli.emit('build.post.build', this, next);
},
// finalize
'writeBuildManifest',
function (next) {
if (!this.buildOnly && (this.target === 'simulator' || this.target === 'device')) {
var delta = appc.time.prettyDiff(this.cli.startTime, Date.now());
this.logger.info(__('Finished building the application in %s', delta.cyan));
}
cli.emit('build.post.compile', this, next);
},
function (next) {
cli.emit('build.finalize', this, next);
}
现在再次运行appc run命令。现在,这将采取最后的构建并准备IPA。这是一个漫长的过程,但在没有任何环境变化的情况下完成工作。