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.