我正在使用xcodebuild
命令行编译我的iPhone应用程序.有没有办法传递某种选项来设置配置文件?一般来说,关于xcodebuild的信息似乎不多.
我更新了我的配置文件以包含一些用于Ad-Hoc测试的设备,我添加了这个新的配置文件并删除旧的,现在我收到此错误:
代码签名错误:供应配置文件'Floors2Go'指定应用程序标识符'com.reapptive.Floors2Go',它与当前设置'com.reapptive.Floors2Go'不匹配
如果你看起来它们都完全相同,我已经删除,重新添加了一个新的配置文件,删除并重新输入我的plist中的包名称,并且对于我的生活,我无法弄清楚这一点.
我也试过清理所有并重建但无济于事.
有任何想法吗?
我有以下设置:
我想使用Vagrant并在每个存储库中包含一个Vagrant文件,因此我的团队成员可以克隆存储库,运行vagrant up
并准备就绪.
我现在的问题是针对供应问题.我需要安装几个工具和包,如apache,git,mysql和几个php包,然后下载一些文件(如最近的开发数据库转储),在/ var/www中设置所有内容并运行composer install命令.
所以这样做的一个选择是使用经理使用厨师或木偶等食谱.另一种方法是编写一个bash文件并使用shell配置.
我对主厨/木偶的经验不多,所以很自然地,使用shell选项似乎更容易,但我想知道从长远来看这是不是一个好的/可行的选择.
为什么对我来说,与木偶/厨师合作似乎是一个糟糕的方法:
我知道我将不得不使用几种不同的配方,并且几乎总是对我的不同存储库使用相同的配方,所以我必须将所有这些配方包含在所有存储库中.考虑有20个repos并需要10个食谱,这意味着我需要添加200个食谱作为git-submodule或类似(同样每个团队成员需要克隆存储库,然后克隆10个食谱存储库,然后每个都运行vagrant项目).相比之下,我只需要使用我的shell脚本创建一个小型repo并将其克隆20次.
我可能遗漏了一些东西,所以请建议我是否应该选择厨师/木偶以及为什么它有意义,即使我的存储库都有一个非常相似的服务器设置.
在升级到iPhone OS 3.1和Xcode 3.2之前,我有一个完全正常工作的构建环境.现在,当我尝试进行构建时,我得到以下内容:
代码签名错误:供应配置文件'FooApp test'指定应用程序标识符'no.fooapp.iphoneapp',它与当前设置'TGECMYZ3VK.no.fooapp.iphoneapp'不匹配
问题是Xcode以某种方式设法认为"FooApp Test"配置文件指定了应用程序标识符"no.fooapp.iphoneapp",但事实并非如此.
在管理器(以及iPhone开发人员门户网站)中,应用程序标识符被正确地视为"TGECMYZ3VK.no.fooapp.iphoneapp".
此外,在项目级别的构建选项中设置供应配置文件时,Xcode会正确识别应用程序标识符,但是当我转到目标时,我无法选择任何有效的供应配置文件.
什么可能导致这个问题?
更新:我试图创建一个新的配置文件,但仍然没有运气.我还尝试将Info.plist中标识的应用程序更改为"no.fooapp.iphoneapp".构建成功,但现在我收到组织者的错误:
可执行文件使用无效的权利进行签名.应用程序的代码签名权利文件中指定的权利与您的供应配置文件中指定的权利不匹配.(0xE8008016).
这似乎是合理的,因为配置文件仍然具有"TGECMYZ3VK.no.fooapp.iphoneapp"应用程序标识符.
我还仔细检查了所有证书在钥匙串中的有效性.
所以我的问题是如何让Xcode看到正确的应用程序标识符?
更新:如下所述,似乎解决了问题的是删除所有配置文件,证书等,制作新证书/配置文件并重新安装它们.如果有人有任何其他解决方案,他们将是受欢迎的.:)
我遇到了一个问题,我无法通过在不同资源中进行深度搜索来解决这个问题,因为大多数"类似"指出了Icon.png大小等错误...
我在验证后尝试上传我的应用程序:
当我试图通过iTunes连接界面上传时,我得到了上面的简单错误,这就是为什么我尝试使用ApplicationLoader,试图找出导致错误的原因,看着控制台.
控制台显示以下内容:
16/02/10 13:25:52 ApplicationLoader[549] *** Codesign error (please ignore invalid option comments): got requirements(0x800000, 534)
Executable=/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app/MyApp
Identifier=com.realtimed.MyApp
Format=bundle with Mach-O thin (armv6)
CodeDirectory v=20100 size=829 flags=0x0(none) hashes=33+5 location=embedded
Signature size=4333
Authority=iPhone Developer: My Name (XXXXXXXXX)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=16/02/2010 13:22:24
Info.plist entries=17
Sealed Resources rules=3 files=28
Internal requirements count=1 size=144
Executable=/var/folders/WZ/WZu24JnOGNe9L79GWq0IlU+++TI/-Tmp-/MyApp.zip/MyApp.app/MyApp
got entitlements(0x800400, 317)
codesign_wrapper-0.7.3: using Apple CA …
Run Code Online (Sandbox Code Playgroud) 有没有办法明确指定Vagrantfile的路径?我的公司希望做这样的事情:要在汇合机器上进行测试,键入一个命令vagrant spinup confluence
,然后将其指向包含汇合环境的不同目录中的Vagrantfile,然后调出所有这些机器.
但是,看起来没有任何方法可以明确说明要使用的Vagrantfile,而且我在ruby中有点(非常)新的,所以我很难为它编写自己的插件.有没有人有关于该做什么的建议?或者有人做过类似的事吗?
我注意到,就在去年左右,许多主要网站对其网页结构的方式也做了同样的改变.每个人都将他们的Javascript文件从与页面本身(或其子域)相同的域托管到托管在不同命名的域上.
现在,有一种众所周知的技术可以跨多个域传播页面组件以并行化下载. 雅虎推荐它和许多其他人一样.例如,www.example.com是您托管HTML的地方,然后您将图像放在images.example.com和scripts.example.com上的javascripts上.这解决了这样一个事实,即大多数浏览器限制每台服务器的同时连接数,以便成为优秀的网民.
以上不是我所说的.
我所说的是专门在一个完全不同的域上托管Javascripts.让我具体一点.就在去年左右,我注意到了:
youtube.com已将其.JS文件移至ytimg.com
cnn.com已将其.JS文件移至cdn.turner.com
weather.com已将其.JS文件移至j.imwx.com
现在,我了解像Akamai这样专门为大型网站外包的内容交付网络.(特纳的特殊领域中的名称"cdn"在这里提醒我们这个概念的重要性).
但请注意,通过这些示例,每个站点都有自己专门为此目的注册的域,而不是内容交付网络或其他基础架构提供商的域.实际上,如果您尝试从大多数这些脚本域中加载主页,它们通常会重定向回公司的主域.如果您反向查找所涉及的IP,它们有时会出现在CDN公司的服务器上,有时则不然.
以前在两家不同的安全公司工作过,我已经变得偏执了恶意的Javascripts.
因此,我遵循白名单网站的做法,我将允许Javascript(以及其他活动内容,如Java)运行.因此,为了使像cnn.com这样的网站正常工作,我必须手动将cnn.com放入列表中.这是后面的痛苦,但我更喜欢它.
当人们使用诸如scripts.cnn.com之类的东西进行并行化时,通过适当的通配符可以很好地工作.当人们使用CDN公司域名下的子域名时,我可以在前面允许CDN公司的主域名使用通配符,并且一举杀死许多鸟类(例如*.edgesuite.net和*.akamai.com).
现在我发现(截至2008年)这还不够.现在我必须在我想要列入白名单的页面的源代码中查找,并找出该站点用于存储其Javascripts的"秘密"域(或域).在某些情况下,我发现我必须允许三个不同的域来使网站工作.
编辑:好的,因为"onebyone"指出,它确实似乎与CDN内容的传递有关.所以让我根据他的研究略微修改这个问题......
为什么weather.com使用j.imwx.com而不是twc.vo.llnwd.net?
为什么youtube.com使用s.ytimg.com而不是static.cache.l.google.com?
这背后有一个推理.
Eclipse 3.4 [.x] - 也称为Ganymede - 带有这种称为p2的新配置机制.
"供应"是允许按需发现和更新应用程序某些部分的过程,如Sun Web站点上的本文中所述.
Eclipse有一个扩展的 wiki部分,其中显示了p2详细信息.具体来说,它在这个wiki页面中说p2将寻找新组件但是在阅读之后.
我想(但你可以根据自己的经验确认这一点),p2可以运行文件"file://"协议,这将允许它使用本地文件(在您的计算机上或在UNC路径'\ server上)\path'),如此处所示,也可以通过文件:
p2机制用于通过eclipse 3.4更新站点更新eclipse本身,并在那些'.prefs'文件中引用,如下所示:
库/文件:_C:_jv_eclipse_eclipse-SDK-3.4-win32_eclipse/URL =文件:/ C:/jv/eclipse/eclipse-SDK-3.4-win32/eclipse/
现在,我如何将该更新站点中存在的eclipse组件复制到本地目录中,并通过提到的".prefs"文件引用这些组件,以使升级过程完全在本地运行,而无需访问Web?
我想,远程"更新站点"中存在的某些p2元数据文件也需要复制和更改.
你对此有什么想法/建议/提示吗?(即如何发现和检索并更新完整eclipse安装所需的完整结构,以便在本地运行该安装)
Chef似乎以奇怪的顺序处理资源,导致我的构建失败.我的主要食谱(mytardis-chef/site-cookbooks/recipes/default.rb
)开头是这样的:
include_recipe "build-essential"
include_recipe "mytardis::deps"
include_recipe "mytardis::nginx"
include_recipe "mytardis::postgresql"
Run Code Online (Sandbox Code Playgroud)
mytardis-chef/cookbooks/build-essential/recipes/default.rb
看起来像这样:
case node['platform']
when "ubuntu","debian"
%w{build-essential binutils-doc}.each do |pkg|
package pkg do
action :install
end
end
when "centos","redhat","fedora","scientific"
%w{gcc gcc-c++ kernel-devel make}.each do |pkg|
package pkg do
action :install
end
end
end
Run Code Online (Sandbox Code Playgroud)
...(这是旧版本https://github.com/opscode-cookbooks/build-essential/blob/master/recipes/default.rb
)
在运行时,由于我不理解的原因,这个构建必需的配方会被加载但不会被执行:
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- v-root: /vagrant
[default] -- v-csr-3: /tmp/vagrant-chef-1/chef-solo-3/roles
[default] …
Run Code Online (Sandbox Code Playgroud) 我使用的是简单的shell脚本,以提供软件作为游民设置为可见这里.
但是无法找到一种方法来将传入的命令行参数传递给vagrant并将它们发送到外部shell脚本.谷歌透露这是作为一个功能添加,但我找不到任何涵盖它的文档或示例.
provisioning ×10
vagrant ×4
iphone ×3
xcode ×3
xcodebuild ×3
chef-infra ×2
cdn ×1
eclipse ×1
java ×1
javascript ×1
p2 ×1
plugins ×1
puppet ×1
ruby ×1
shell ×1
webserver ×1
whitelist ×1