这一周都做了什么?
主要是重构,但是重构的结构早就写好了,大部分的时候都是在无聊的分离UI和逻辑。
学到的新东西有哪些?
因为有过高的计算量和数据操作,因此开始处理多线程,开始写线程中通讯。
因为要发布版本,开始写shell和鼓捣ant.
说一下线程的一些思路。说来惭愧,大学的时候明明学过操作系统,现在居然连信号量这种最基础的东西都忘记了。多线程其实并不复杂,唯一麻烦点得就是线程间的通讯。现在处理的思路为:假设有两道线程,主线程和逻辑线程。为主线程和逻辑线程各自分配一段缓存区。然后主线程和逻辑线程每帧都检测一下自己的缓存区,如果主线程缓存区有数据,则发送出去,如果逻辑线程缓存区有数据,则执行相应的操作。至于如何每一帧操作,主线程有schedule,逻辑线程需要自己写。这里注意一下cocos2d里面几乎所有东西都是非线程安全的。
缓冲区一定要用自己分配的内存区,不要用类似的list+struct之类的数据结构,好处是可以统一处理各种事件。格式可以是int32_t的长度,int32_t的消息类型,后面是消息数据,这样子取和存都可以统一处理了。
说一下ant吧,前面有写过一篇小白的ant博客。但是说的是如何打debug版本。如果要打release,则运行ant release。不过生成的是未签名的。如果想打完之后是签名的需要在工程目录的build.xml里面添加类似代码(注意是在<import file="${sdk.dir}/tools/ant/build.xml" />之前)
<property name="key.store" value=""/> <property name="key.store.password" value=""/> <property name="key.alias" value=""/> <property name="key.alias.password" value=""/> <property name="out.packaged.file" value=""/> <property name="out.unaligned.file" value=""/>
具体原因是为什么?可以查看一下ant下面的build.xml。
最后不贴点代码貌似说不过去,就把写的shell脚本贴上来。还是不错的东西,原先出版本要改脚本,压缩脚本,拷贝资源,打包整个下来要花十几分钟,现在有了这个一下子打了30个不同的包,总共用了不到十分钟。脚本果然是我们的好朋友。
names=(139MM UC Taobao shiziMao dangle xiaomi mobileHome androidMarket NearMe busStore anzhiMarket meizu androidStars mumayi leMarket handsStore soCool huaweiHui feifan jifeng youyi neng yingyonghui xiazaiduo kupai Nduo lenovo muzhiwan) export LC_COLLATE='C' export LC_CTYPE='C' for((i=17;i<=44;i++));do echo "changeContent" distance=1 ((preI=$i-$distance)) oldString="APPROACH = \"${preI}\"" newString="APPROACH = \"${i}\"" sed -i "" "s/${oldString}/${newString}/" ../scripts/app/MyApp.lua echo "compress" sh compile_script.sh echo "compile" ant release -Dsdk.dir=/Users/user/Documents/quick-cocos2d-x/android/android-sdk-macosx echo "changepackagename" file=17 ((index=$i-$file)) mv bin/Thpbook-release.apk "bin/thm-${names[${index}]}.apk"