周末的时候刚把应用的 ios 给上架了,接着他们就问我什么时候出安卓的版本。好久都没有再打开eclipse,安卓的开发我几乎都忘记完了,看样子要重头再来了。
安装好最新的更新,新建立了项目,发现无论是 官方的模拟器还是我那可怜的魅族M9,调试都很慢。慢到什么程度呢,从我按下调试按钮到应用的界面被显示出来,需要35秒+的时间。而我又是那种猜测编程式的,简直很崩溃。
在微博上抱怨了一番,结果表弟发了个关键词 Genymotion,我一查,是一个第三方的android 模拟器,果然不错。这里就推荐给大家,虽然我的这个空间几乎没有多少观众。
首先,需要去 http://www.genymotion.com 去注册一个帐号,这个帐号在后续中会使用到。注册并激活帐号后,就可以下载了。
然后,需要下载安装 vitual box 软件,下载自己对应的操作系统版本就可以了。
接下来,安装上面的2个软件。
第四步,打开eclipse,安装新插件,插件地址是http://plugins.genymotion.com/eclipse/。安装完成后,打开eclipse的选项菜单,里面就有genymotion的配置项,设置 SDK 的目录,以及代理什么的。
运行 genymotion ,创建虚拟设备。接下来就可以开工运行了,非常的方便。
这里我没有写更具体的,因为我觉得对于常见的 windows 和 mac 平台,是非常傻瓜式的,几乎不需要思考。
友人服务器最近到期,准备迁移到阿里云上面。
买好了云服务器后,就开始部署,结果一直报错。说不是有效的32位程序,由于网站的登陆页面使用了加密狗,而报错的就是这个加密狗相关的dll 文件。在IIS 里添加了对32位程序的支持,还是不行,错误提示说是无法加载指定的模块。
后来想到加密狗dll 是用c++开发的,是不是缺少相关运行时导致。不清楚dll是用c++的哪个版本开发的,只好把05、08、12的32/64位运行时都下载了安装。
还是不行。
有点小崩溃了。想到既然是无法加载指定的模块,那应该是缺少模块咯。又用depends查看加密狗dll引用了哪些系统dll。发现引用了msvcr71.dll和mscoree.dll,把这2个dll 从别的电脑上复制到服务器上。运行又报错,不过错误提示发生了变化。
说是 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\946055b8\92eead15\xxxxxx.dll 拒绝访问。
开始以为是这个目录的权限问题,添加权限还加不上去,估计server 2008 默认是不允许的。后来查询了下,很多人说是需要给系统临时目录添加权限,果断给 temp 目录添加了 network service 权限,发现还是不行。
反复搜索,终于解决,原来是需要在应用程序池设置中将“加载用户配置文件”(Load User Profile)设置为true。
再次运行终于正常出现页面了。接下来又是数据库无法登陆,这个按照网上是说明,选择附加进来的数据库,右键属性,如上图,文件–〉所有者–〉选择用户sa,即可用此sa用户登录数据库。
弄好了这些,都深夜2点多了。
7月份都过去大半了,今天才来写这个月的博客。今天可以来说一说最近发生的一件事情。
这个月,除了玩了很多的LOL外,就是写一个小应用了。某一次在威客网站上接了一个iOS的活,人家已经有android 的版本了,想再来一个iOS的,功能都比较简单。人家问我要多少钱,我很不自信,因为才学习iOS开发没有多久,所以准备说200块。然后又一狠心,又加了50块。
接着就轮到人家不相信了,我想如果从事开发的同学就知道,这个价格是非常低的了。在人家质疑能力的时候,幸好前不久在store上架了一个html5介绍的应用,于是人家也没有多说什么,当然这么低的价格也让人家最终选择了我。
当然最后结果还是不错的,人家主动说250块太低了,然后给加到350块了,后来觉得和我合作很舒服,于是又给添加了350块。虽然钱真的不多,也就一顿饭的支出。但那种被认可的感觉,真的很爽。
因为这个事情,妹子把我说了好几顿了。正所谓万事开头难嘛~再接再励好了。
今天拿到一个 pad mini,所以就想看看糗事在pad 上运行的效果是什么样子的。先在网页上添加了设备的唯一编号,然后运行。结果就报错,弹出错误提示为 “a valid provisioning profile for this executable was not found”。
网上查询了下,大致都是说证书的问题,我印象只是记得在 xcode 的界面中曾提示过什么密码不正确。后来又查看了 provisioning profile ,发现果然没有选择新添加的设备。勾选并重新生成证书,下载安装。问题解决了。
第一个iOS应用终于上架了。这是一个分享传播html5知识的简单应用。历时3个月,被拒绝了5次。通过审核时,真是感觉泪流满面啊。
由于E文水平很菜,当初想了解下苹果从开发到上架的整个流程,于是就想写一个简单的应用尝试看一看。我的很多朋友都是在做前端开发,所以就选择以 html5 作为切入点。
其实最头疼的是没有设计参与进来,所以界面简单而且丑陋。苹果的审核是很严格的,对于不会做设计的我来说,实在是有点难为我。由于程序功能简单,网上很多的界面都只有参考意义。
后来有一次看到微博上一个讲述统计的图片,有点感觉,于是使用了四叶草的变形。也恰好符合程序的几个功能菜单。在最开始的版本里,有放一个广告墙的推荐。被拒绝后在原因描述里说违反了苹果的策略。按说在应用里放广告是很正常的事情,不知道为什么会拒绝。只好给移除掉。
位置是空闲出来了,但是接下来要考虑填充的内容,恰好在看一个 cover flow的特效,那天在家在翻阅一本前端开发的书籍,当时就决定使用这个特效来推荐一些关于 html5的书籍。于是也就有了现在的样子。
应用最初出发点是想熟悉流程的,被苹果拒绝后,看着页面上显示 reject 字样,有点强迫症的我,又开始不甘心了,坚持要给做到通过。是的,最后我坚持下来了,不知道是不是因为他们的审核团队比较烦我才给通过的。
丑是丑了点,我接受各位同学的鄙视,不过你们谁有比较好的设计资源,一定要告诉我呀。
上一个应用中的下拉刷新我是自己摸索着写的,不过是针对 UITableView 的,这次的应用是要针对一个 UIScrollView ,就想用现成的,反正大概原理都差不多,没有必要重复造轮子。于是选择了 EGORefreshTableHeaderView 。
下午就边网上搜索边尝试使用,但是发现这个组件里的文字使用了多语言设置,诶呀我去,我的应用根本不需要多语言,估计写代码的多少都和我一样有点强迫症,于是按照它的结构来添加多语言处理,没有修改源码,顺便就当学习下如何使用多语言呗。
添加语言时,弹出了一个对话框,大概是问是不是要引用系统默认的英文。一想应用又不上国外市场,要着毛用。就取消,然后选择英文,点击删除。列表里干净了,洁癖的人你伤不起。准备添加中文,但是这个时候添加不了了。
对话框里只有一个 Choose files and reference language to create **** localization ,无法下一步了,在这下班的点来了这么下,网上一顿好找,google 时不时和谐,后来终于在 stackoverflow 的某个网页上发现了方法,现在放出来,方便和我一样E文是个半吊子的人。
右键点击*.xcodeproj 文件,选择显示包内容,然后编辑 project.pbxproj 文件,搜索/* End PBXSourcesBuildPhase section */字符,在这个段落的后面添加一个新的段落如下:
/* Begin PBXVariantGroup section */
27548D921611B0BE008EA1CD /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
27548D941611B0BE008EA1CD /* en */,
);
name = Localizable.strings;
path = ../Code;
sourceTree = “<group>”;
};
/* End PBXVariantGroup section */
到这里都还算简单,后面的步骤我是摸索了才明白。
接下来,在项目中添加 Localizable.strings 资源文件,然后在project.pbxproj文件中搜索 /* Localizable.strings in Resources */ 字符串,找到前面的字符串标志,替换我红色标记的部分。记得喔,绿色部分的不要替换,我给替换了然后 xcode 直接崩溃掉。蓝色部分的 path 我就不清楚啥意思了,原帖中只是说让大家自己尝试就知道什么情况了。我看了下project.pbxproj里其它地方对于 Localizable.strings 文件有 path 关键字的描述,最后给修改成 Localizable.strings 这个字符串了,而非上面的 ../Code。
重新打开项目,系统默认的语言就又回来了。接下来就是该怎么办就怎么办了,真长姿势。
后面的总结就是,XCode 真心木有 VS 好用。
昨天编译的时候,突然间给跳出了编译错误。File was built for archive which is not the architecture being linked (arm7s)。反正也看不懂英文,就拿错误信息在网上搜索了下,有人说是修改 build setting ,按照操作,发现木有效果。
于是又重新搜索,发现了解决的方法。XCode -> Project Setting -> BuildSettings -> Build Active Architechure Only 从No改成Yes .
问题解决,编译后果断提交审核。
在我们的 metro/modern 应用中,如果我们的程序想实现直接跳转到微软的windows store中的话,可以参考下面的方法,这些也是我在翻 MSDN 的文档中看到的。
使用协议,关于自定义协议的文章,可以看衣服自己洗的文章。
通过ms-windows-store协议来实现。目前该协议支持3种行为,分别为 PDP、Updates、Search。首先我们要知道应用程序的包名,把应用程序的包名作为参数传递过去就可以了。如果是应用程序本身的话,可以通过 Package.Current.Id.FamilyName 来获得。
完整的程序代码:
await Launcher.LaunchUriAsync(new Uri(“ms-windows-store:PDP?PFN=” + Package.Current.Id.FamilyName));
PDP 是打开应用的列表页,参数 PFN 为应用程序的包名。Updates 是打开 store 的更新页。Search 是打开store 的搜索结果列表页,参数 query 是搜索关键词。
最近在一个android 项目中,想对一个字符串变量做 switch 判断,居然提示说有语法错误,感觉太不可思议了。然后按照 Eclipse 的智能提示,自动做修复。但是在对话框中给出了错误信息,Android requires compiler compliance level 5.0 or 6.0. Found ‘1.7’ instead. Please use Android Tools > Fix Project Properties.
在网上搜索了一把,很多文章都写的是在项目上右键 ->android tools->Fix Project。如果不可以,检查Project->Properties->Java Compiler ,确认是 1.6 。
按照这个操作了后,无论修改成 1.6 还是 1.7还是不可以,很是气愤呀。后来无意见看到到了一个,说是需要确保android sdk中有Android1.6(API4)。果断去下载了,然后把 java compiler 改成 1.7 后,问题解决了。
这真是太奇怪了。