我为iOS编写了一个小应用程序,我使用的是Mac OS X 10.6.6,Xcode 3.2.5和iOS SDK 4.2,它们都运行在Virtual Box机器4.0中.
现在我希望应用程序在我的iPhone上运行并将其分发给一些beta测试人员.因为我不是注册苹果开发者,我不想向苹果支付99美元,我需要找到其他方法.
我在网上找到的第一件事是alex whittemore的教程: alexwhittemore.com
我按照说明创建了自签名根证书,二进制修补Xcode程序并在构建过程中添加了一些脚本.之后,我切换到"调试"到"释放"模式,从"模拟器"切换到"设备".构建过程以警告消息结束:
应用程序验证失败.签名无效,或者未使用Apple提交的证书签名.(-19011)
但我仍然在Release-iphoneos文件夹中有一个appname.app文件夹,我可以通过我的越狱iphone的/ Applications/-folder中的ssh或scp进行传输.之后我在iphone上调用"uicache",应用程序显示在跳板中.我也可以启动应用程序,一切正常.
现在是问题,我想要一个我的应用程序的IPA文件.正如我在网上看到的,IPA文件只不过是名为"Payload"的文件夹中的appname.app文件夹,与两个名为iTunesArtwork和iTunesMetadata.plist的文件一起压缩.我用512x512 jpeg图像创建了iTunesArtworks文件,并在网上找到了一些预设的plist文件.之后,必须将appname.zip文件重命名为appname.ipa.我手动完成了这个过程,并通过scp将IPA文件传输到我的iphone上的installous-app的download-folder.然后我开始安装并尝试安装我的应用程序 - 出现错误消息:
安装失败:ipa无效
我在网上搜索了此错误消息,并发现了有关更新我的Appsync和Installous-installation的信息.我从hackulo.us-repository更新了这两个程序,但这没有帮助.
所以我想,在IPA创建过程中我做错了什么.我做了一些研究,发现可以将appname.app-folder拖放到itunes,后者会自动生成一个IPA文件.然后你可以在iTunes的某个文件夹中找到IPA文件.我将此文件复制到我的iphone上的installous下载文件夹,并尝试再次安装此文件,但显示相同的错误消息.
我的问题:如果我有一个自签名的应用程序,如何为installous制作有效的IPA文件?安装检查签名吗?
也许有人对我有暗示......
编辑:
我找到了解决问题的方法.
因为我想了解有关installous-error-message的更多信息,我通过我的iphone上的cydia安装了"syslog toggle"和"syslogd to/var/log/syslog",以便将详细信息记录到/ var/log/syslog.然后我尝试再次安装IPA文件,我从installd守护进程的syslog中收到一条消息,IPA文件的最低iOS版本要求为4.2,而我的iphone在iOS 4.0下运行.
*installd [163]:00503000 verify_bundle_metadata:系统版本低于最低操作系统版本*
通过ssh将appname.app-folder复制到/ Applications /,但是使用错误的最小iOS版本参数构建,将应用程序安装为系统应用程序是没有问题的.所以我用最小的权限重建我的应用程序-iOS版本为我的iPhone.
我尝试再次安装,但我再次收到有关无效IPA的错误消息.这次installd守护进程告诉我在我的iphone的syslog中,它无法安装系统应用程序:
*installd [193]:00503000 preflight_application_install:无法安装系统或内部应用程序*
这个问题很容易解决,因为我仍然在/ Applications /中将应用程序安装为系统应用程序.我只需要删除/Applications/appname.app文件夹并通过ssh用户"mobile"两次调用"uicache".然后我再次尝试安装并试图安装我的IPA文件 - 瞧瞧:它工作了!
也许我能够帮助有类似问题的人.如果出现一些像"invalid ipa"这样的通用错误消息,通过cydia安装syslog-apps似乎是一个好主意,以便仔细查看installous的错误消息.
ps:我真的很恼火,我的问题被主持人关闭了!仅仅因为有人认为,我的问题"通常不适用于全球互联网用户".关闭问题太愚蠢了!现在你看到:我得到了一个解决方案,我在这里发布了..也许它将来会帮助别人!你不应该通过过度控制用户内容而与维基百科犯同样的错误.
我已经从Grails 2.2.4切换到Grails 2.4.3并且使用我的IntelliJ IDEA 13.1.4 IDE遇到了问题.
在创建一个干净的Grails 2.4.3项目并添加一个干净的控制器类之后,我通过IntelliJ IDEA中的"run-app"启动项目.之后我在控制器中更改了一些内容,但我得到以下异常:
2014-09-29 18:45:41,801 [Thread-11] ERROR plugins.AbstractGrailsPluginManager - Plugin
[controllers:2.4.3] could not reload changes to file [D:\VS\Eclipse Workspace\xx\grails-app\controllers\com\xx\backoffice\MaintenanceController.groovy]: Cannot get property 'cacheOperationSource' on null object
Message: Cannot get property 'cacheOperationSource' on null object
Line | Method
->> 184 | doCall in CacheGrailsPlugin$_closure4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - …Run Code Online (Sandbox Code Playgroud) 我们使用 Prometheus 来观察我们自己的应用程序的指标。我们应用程序的 API 提供了一个端点来将指标传递给 Prometheus。Prometheus 每 30 秒就会抓取一次信息。
根据指标,我们定义了一些警报,这些警报会触发到 Alertmanager,然后触发电子邮件警报、Slack 消息或显示在 Alerta 中。
有时我们的应用程序无法提供指标,并且 Prometheus 抓取器运行超时。每当某个指标在这样的时刻丢失时,相应的警报就会被清除(在电子邮件、Slack、Alerta 中)。
30 秒后,我们的应用程序再次提供指标,Prometheus 发出新警报(再次触发电子邮件、Slack 消息并在 Alerta 中显示新警报)。
如果没有给出清除警报可能所依据的指标(至少在我们看来),那么缺少指标就没有理由清除警报。
是否有任何选项可以以某种方式配置 Prometheus 或 Alertmanager,只有在指标导致警报出现时才解决/清除警报(而不是将缺乏指标解释为清除警报)?