pxl格式的iphone程序包,可以直接通过91手机助手安装到真机,很方便,介绍一下制作方法。
1. 新建一个目录 $appname
2. 在$appname目录下,新建文件夹 PkgScript和文件PxlPkg.plist
3. 将包XXX.app文件夹内容复制到$appname目录下,我一般连上真机,winscp下载 (/var/mobile/applications下)
4. 步骤2中的PxlPkg.plist 文件格式见附录。
5. chmod -R 755 * 后再 zip ../weibolu.pxl -r ./*
修改$appname目录下所有文件的属性,并打zip包 。(这一步在mac下做,或者在windows的cygwin下做)
6. 完毕。如果装了91 iphone助手,双击pxl包就能安装
附录: PxlPkg.plist 文件格式
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“[]>
<plist version=”1.0″>
<dict>
<key>CFBundleIdentifier</key>
<string>Reweibo.Weibolu</string>
<key>RDPxlPackageFiles</key>
<array>
<dict>
<key>destination</key>
<string>/Applications/weibolu.app</string>
<key>overwrite</key>
<true />
<key>permanent</key>
<false />
<key>source</key>
<string>weibolu.app</string>
</dict>
</array>
<key>RDPxlPackagePostflight</key>
<array>
<array>
<string>chown</string>
<string>-R</string>
<string>root</string>
<string>/Applications/weibolu.app</string>
</array>
<array>
<string>chmod</string>
<string>-R</string>
<string>775</string>
<string>/Applications/weibolu.app</string>
</array>
</array>
<key>RDPxlPackageDesc</key>
<string>微波炉</string>
<key>RDPxlPackageFormat</key>
<string>1</string>
<key>RDPxlPackageName</key>
<string>Weibolu</string>
<key>RDPxlPackageVersion</key>
<string>0.1</string>
<key>RDPxlPackageIcon</key>
<string>weibolu.app/icon.png</string>
<key>RDPxlPackageFireware</key>
<string>3.0,3.1</string>
</dict>
</plist>
Posted in
未分类 at 10月 12th, 2009.
No Comments.
1. 新建一个目录 $appname
2. 新建文件夹 Payload和文件iTunesArtwork (注意大小写,iTunesArtwork由图标文件改名得到)
3. 包XXX.app文件夹内容放到Payload下,我一般连上真机,winscp下载 (/var/mobile/applications下)
4. 修改XXX.app下的Info.plist,现在的Info.plist一般都是二进制文件了。可以用专门的工具(叫做pledit)修改。其实自己建一个文本格式的文件也能正常工作。格式见附录。
5. 将$appname里的内容,用winrar压缩,选择zip格式,后缀名直接改为.ipa即可。
6. 可以用iTunes同步到真机了。注意真机必须做一下同步非appstore ipa的破解。
附:Info.plist格式
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“>
<plist version=”1.0″>
<dict>
<key></key>
<string></string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>Weibolu</string>
<key>CFBundleExecutable</key>
<string>Weibolu</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.Weibolu</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Weibolu</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleResourceSpecification</key>
<string>ResourceRules.plist</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0.1</string>
<key>DTPlatformName</key>
<string>iphoneos</string>
<key>DTSDKName</key>
<string>iphoneos2.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>2.0</string>
<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
</dict>
</plist>
别的不太重要,粗体部分的是<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>必须的。
Posted in
未分类 at 10月 12th, 2009.
1 Comment.
碰到文件路径比较深的,在terminal里要使用能急死人。这个方法不用装任何程序,简单实用。
mac osx 下,快速复制文件路径的方法。1. 将文本编辑(Text Editor)设置为纯文本模式。 2. 将文件或者文件夹,拖到文本编辑器里,即可。
Posted in
未分类 at 10月 10th, 2009.
2 Comments.
iphone开发中,在头文件的interface声明里,可以用@property (nonatomic,retain) NSString *blog;来声明一个属性,在objc 1.0里,需要自己写getter setter 方法,在现在的objc2.0里已经简化了。只要在.m文件中头部 @synthesize blog;即可生成blog属性的 getter和setter方法。
一般情况下,属性里的对象变量,在对象释放之前都要保留至少一个得retain Count,否则,不一定什么时候使用属性的时候,属性对象已经被释放了,就出错了。如果,没有使用@synthesize生成setter方法,而是自己对属性赋值,这时候,一般都要对属性对象[obj retain]以后再赋值。(针对通过with初始化的;通过init初始化并autorelease的一样)。
还有一点非常重要,使用中注意,比如上面的类:
如果这样对blog属性赋值,
Blog *iu1ublog = [[Blog alloc] init];
blog = iu1ublog;
[iu1ublog release];
在真正需要blog属性时,会发现blog属性的对象已经被释放了。因为 blog = iu1ublog这一步并没有ratain这个对象的引用计数。
必须用 self.blog = iu1ublog,才说明是对属性赋值,对象才会retain. 直接blog = iu1ublog,是对内部成员变量赋值,不是对属性赋值。
Posted in
未分类 at 10月 9th, 2009.
1 Comment.
Google Wave这两天比较热,求的人很多。Google Wave这个词在twitter和新浪微博上都成了热门话题词了。早上微博上一个朋友找我要邀请,找了好一会儿才找到当时的账号。当时是sandbox账号,现在是正式google wave了。里面有一条让我激活的Wave,激活以后,感觉内容比sandbox稍微好一点了。可是还是玩不起来,可能现在人太少吧。带了8个提名资格,没发现邀请资格,所以又需要提名的,可以跟我要。
说说对google wave的简单看法,感觉本质上其实和twitter,微博还是很类似的,不过,做的更细化了一点。可以发普通wave,添加了相关widget以后,可以发视频等等。比twitter线索化一点,一条wave可以很长。过几天人多了,玩玩在评价吧。
Posted in
未分类 at 10月 2nd, 2009.
23 Comments.
如果有ssh账号,有墙皆是门。Windows下可以通过plink命令行,当然,更方便的是,使用MyEnTunnel.
Mac下可以直接使用内置的ssh命令。 使用ssh -D参数,直接把通过ssh建立一个socks 代理服务器。
方法如下:
按shift+command+u打开工具箱,打开终端:
ssh -D 1080 sshuser@sshhost.com 会让你输入ssh的密码。
然后到系统设置里,修改网络配置,修改网络配置里的socks代理为127.0.0.1,端口1080,关闭。
找个墙撞撞吧,应该能过去了。
ps: 我第一次设置的时候,方法和步骤完全一样,netstat 也看到绑定的本机代理端口了。但是safari总连不上,想不明白。后来,重试了一下就好了。
ps: mac下貌似有个叫tunnel manager的,我也用了,连接也能建立,但是可能开始safari配置错了。没连上,不过ssh -D这么方便,何必在装一个软件呢。
Posted in
mac,
技巧 at 10月 2nd, 2009.
No Comments.
这也是个iPhone开发初学者常犯的错误。原因是声明属性的时候,没有一个配套的私有属性。
@property (nonatomic,retain) IBOutlet XXX *xxx;
在类里如果不给他指定对应的私有属性,即使给属性赋值了,也无法保存,就会产生这个错误。
synthesized property ‘xxx’ must either be named the same as a compatible ivar or must explicitly name an ivar
不过这个错误在加入@synthesize xxx;以后才会出现。因为@synthesize会帮你生成一个getter和setter方法。
Posted in
未分类 at 09月 15th, 2009.
1 Comment.
新浪微博无疑揩了饭否,叽歪,嘀咕。。。的油。都是twitter clone,新浪围脖的出现却算是合适的时间,合适的地点(当然主要是合适的地点)。既然用户习惯已经培养起来了,新浪不用在教用户可以这样做,可以那样做了。反过来,天天都是用户再教新浪应该有这个功能,应该有那个功能。
当然不是新浪不用功,即使是团队,即使是门户新浪网的团队,执行力也是有限的,要想为无限的人民群众服务,一种是靠时间,几天一个功能,做啥你用啥,急啥;一种是靠开放,比如twitter, twitter的很多功能都是用户习惯收入到官方那个功能,这个趋势还在增加,此外,twitter的各类客户端各种插件也是五花八门,这一点也就饭否借鉴了一部分,不过照twitter也还差的远。
好了,开放。facebook的开放在大洋彼岸百花齐放,国内SNS的开放却是公认的伪命题。当然,微博的开放是另一种形式,主要是扩展功能为主,应该会好一些。不过,新浪微博会不会开放api么,会开放成什么样子,大家只能慢慢猜。
在这种局势下,微波炉诞生了,微波炉给微博用户提供了观看微博直播的途径,下回看快女,看大典,可以不用只守着电视看了,盯着微波炉看就可以了,看的兴起,还可以自己发几条微波参与一下。
此外,正如上面提到的,很多功能用户很需要,新浪微博暂时还顾不上实现,微波炉也会帮忙帮用户实现。比如@回复功能,分享音乐、视频功能、快速贴图功能等。微博做的不好的功能,微波炉也会提供更好的方案,比如博客Feed总导入不进去等。总之,饭总是要吃的,灶台不够,就尽量用微波炉做吧。
当然,很重要的一点,是信息的丢失问题。有时候,因为网络问题,发不上去还好;有时候发上去了,信息可能也会丢失。脖友们,憋半天,想一句话不容易,有微波炉就不怕了,微波炉的信息都是离线保存的。不但自己的,好友的信息也是随时同步并保存到本地,随时可以查阅。
好了,这是一个神奇的微波炉,也是一个进步中的微波炉。不到一周,已经发布了近10个版本。从第一个版本丑的不敢见人,到现在差强人意。博友们的关注和鼓励才是微波炉成长最大的动力。此期间主要也是通过微博收集反馈和发布信息,说明了微博不但可以是一个谈风月的地方,也可以是一个干正事的地方。
来吧,用微博吧,用微波炉吧!
Posted in
开发手记 at 09月 10th, 2009.
No Comments.
苹果App Store上线已届1年,但外界直到现在才获知审核程序的运作方式。
苹果一直不愿公开讨论外部开发者制作的应用软件如何取得核准,但美国政府在针对几周前Google Voice被否决的一纸调查文件,让苹果被迫说明。日前苹果回答了FCC一连串针对App Store和其软件评估政策的提问,而当中有几个耐人寻味的地方。
首先,苹果说Google Voice并未被否决,只是没有被核准,且决策过程中完全没有征询AT&T的意见。同日,AT&T对FCC的询问也有相同说词。
但苹果在回复信函中表示,虽然苹果不会就外部应用软件去征询AT&T的意见,AT&T仍会就若干软件提出抱怨。苹果告诉FCC:“偶尔,AT&T会就某些软件牵涉到的网络效率和潜在的网络阻塞问题表达关切,苹果会将这类关切纳入考量。”
不过,在Google Voice争论之外,现在我们对App Store的背后运作方式,有了更广泛的了解。首先,那是一项极度巨大的行政操作挑战。
苹果声称,他们每周平均收到8,500项新软件和既有软件更新申请,目前只有40人全职负责审核所有提出申请的软件,而每一项软件都须经过两个人审核。八成的软件都在不需修改的情况下获核准,而95%的软件可在申请后的两周内审核通过。苹果估计,从App Store去年开张至今,经过审核的应用软件和更新共约20万项。
实际计算后可发现,这个工作量相当骇人。40人在一周五天的正常上班时间,要审核8,500项软件和更新,平均每人每周要检查212项软件。但由于每项软件都要经过两位不同员工的审核,他们的每周工作量应该乘以2,总共424项软件,或平均每日85项。假设他们的工时是正常的每日8小时(老实说,这些人恐怕没那么好命),那代表App Store团队的每个人每6分钟就要审核完成一项软件。因此,某些违反规定的软件可能意外地躲过审核者的眼睛,也是可以理解的。
针对若干具争议性或特殊的案例,苹果成立了一个App Store高层审核委员会。虽然确实人数不得而知,我们知道这是一个由App Store资深管理层所组成的委员会,每周按时开会,检讨审核程序政策,和讨论“引发复杂或新问题”的应用软件。
审核员主要检查的软件项目为:错误的软件、太常当机的软件,使用未授权的API(Google显然不算在其中)、盗版软件、儿童不宜的内容,和任何“减损iPhone核心经验”的东西。
根据苹果与AT&T签订的独家合约,苹果有义务除去任何让iPhone使用者拨打网络电话的软件,或任何违反AT&T服务条款的软件。这包括被苹果否决的SlingPlayer Mobile。该软件能将机顶盒的影音内容传送至iPhone,供远端观赏。
苹果发给该公司信中写道:“利用AT&T的移动网络将电视信号重新导入iPhone,有违AT&T的顾客服务条款。”该软件只能使用iPhone的Wi-Fi,不能用到3G网络。这个案例在今年5月引发议论时,AT&T即作过相同的解释。
最近几周,苹果也开始承认App Store的审核程序经常对开发者和消费者造成困扰和不满,包括苹果营销官员Phil Schiller最近与开发者和一名博客的公开沟通。但这次是整个程序初次对外公开。
苹果声明写道:“我们正在新的领域,尝试过去从未作过的事情。我们面对许多困难的新问题,而虽然我们可能偶尔犯错,我们会努力地从中学习,并持续改善。”
CNET消息
Posted in
iphone 资讯 at 08月 25th, 2009.
No Comments.
1. 一般情况下Sqliteman差不多属于最方便的sqlite桌面管理工具,因为,他可以直接打开一个sqlite数据库文件进行管理,比较方便。sqlite developer每次都要关联一下文件,才能操作,不过对DDL的操作sqlite developer是最方便完善的,sqliteman alter某一个字段的类型时,会丢失主键(primary key)的声明,这应该是它的一个bug.
2. integer字段,字段类型最好写INTEGER,全部大写的。我用delphi的sqlite simple wrapper的FieldAsInteger读取类型为integer的字段时,总告诉我类型不对,改为INTEGER正常。(后记,还是检查了一下SQLITETable3.pas文件的代码,果然里面判断类型时,直接和大写的匹配,sqlite对字段的类型时大小写都可以的。里面很多地方判断的时候,都只和大写判断,暂时不去修改这个wrapper的代码了,地方太多,先自己按大写的习惯来吧)
Posted in
开发手记 at 08月 22nd, 2009.
No Comments.