移动平台

Copy .strings file Error Validation failed: The data couldn’t be read because it has been corrupted.

XCode中iOS项目字符串资源InfoPlist.strings添加多语言支持后,修改中文资源中字符串常量为汉字后编译出现标题中的错误,解决方法为修改各语言资源中的文本格式,使其结构一致,如出错时的中英文资源是这样的:

{

CFBundleDisplayName = “\U71af\U72a2+”;

}

{

CFBundleDisplayName = Game+;

}

修改英文资源为这样即可解决:

{

CFBundleDisplayName = “Game+”;

}

wait_fences: failed to receive reply: 10004003和UIAlertView之间的小故事

试验iOS上的GLES 2.0和GLSL的时候,想完美点加个初始化时的2.0支持判断,修改了一下XCode4默认生成的框架,在awakeFromNib时直接判断并用UIAlertView提示,然后delegate中退出程序。结果一运行console提示标题里那段话,应该是个警告,但看着别扭,完全删掉UIAlertView提示代码就没有问题。

看了一下网上这个提示问的不少,出现情况和解决方法也是五花八门,提供一下我这个的解决方法吧,供网友们参考。

这个问题时由于UIAlertView在弹出时主View还没有加载并显示导致的,可能和动画效果有关,没去验证,总之,改变一下判断逻辑,把弹框提示部分的触发代码挪到viewWillAppear里就没问题了!

iOS系统swprintf格式化带中文字符参数串的EILSEQ问题

之前在Android NDK下纠结过wchar的问题,发现在官方文档里写着2.3以上系统支持部分wchar相关函数,如wcslen等,不支持swprintf,mbstowcs等,很是遗憾,只能自己找了相关函数的源码作了替代实现。现在居然发现在iOS上用swprintf效果也是不尽人意。

省略若干google baidu以及排查调试的过程,直接讲结果,就是在用swprintf的时候任何参数串内容带有中文字符(应该是所有非ansi那些),就会导致返回错误-1,查看errno错误号是EILSEQ,原因就是wchar串里有无法解析的编码字符,这个问题的解决方法是:

Continue reading…

Android真机执行ndk-gdb后出现”found running pid:0 could not extract pid of application…”的解决方法

先说出这问题时的周遭环境:

Android SDK Tools r12
Android SDK Platform-tools r6
Android NDK r6
HTC G10 DesireHD(root)
Eclipse 3.7 Indigo
ADT 12.0.0
Windows XP SP3

问题描述:按着Sequoyah Native Debug的教程走,到执行ndk-gdb起服务的时候,提示”found running pid:0 could not extract pid of application…”说找不到程序的PID(顺带一提,之前还有一次是提示could not extract package’s data directory…,经查发现原因应该是设备没有root),执行adb shell ps发现要调试程序的进程就在那里,PID也看到正常,为什么ndk-gdb说获取不到PID呢?

Continue reading…

NDK r6编译一直提示WARNING: Rebuilding STLport libraries from sources! 的不确定解决方法

自从升级到NDK r6以后,一执行编译就会提示这些东西:

Android NDK: WARNING: Rebuilding STLport libraries from sources!
Android NDK: You might want to use $NDK/build/tools/build-
stlport.sh
Android NDK: in order to build prebuilt versions to speed up your
builds!

说用到的STL port可以用它说的sh进行prebuilt来提高编译速度,虽然没发现有什么太大的影响,但每次提示都很烦人,尤其是ndk-gdb执行的时候居然也会有这些提示,于是决定想办法解决一下!

Continue reading…

关于Apple iOS IAP应用内置付费设置的一些心得!

iOS IAP应用内置付费好处多多,第一次植入问题也是多多!

开始加IAP的时候,习惯性的上网找同行写过的经验文章参考,Apple官方文档看着就头疼,找了一篇http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/,看似写的很完整,跟着一步一步做,结果最后request product的时候一直返回Invalid ID!开始在iTunes Connect上折腾,传了删,删了传的辗转了好几次,各种设置调来调去,各种search结果看了又看,最后总算是搞定了,也写点自己的心得吧。

Continue reading…

[ZT]如何解决:Android中 Error generating final archive: Debug Certificate expired on … 的错误

问题概述:

在导入一个app后提示如下错误:

“Error generating final archive: Debug Certificate expired on 10/09/18 16:30”

 

原因分析:

android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置。debugkeystore默认有效期为一年,如果你是从一年前开始完android程序,那么在一年后导入这个app的时候很可能出现debug keystore过期,导致你无法生成 apk文件。

此时你只要删除debug keystore就行,系统又会为你生成有效期为一年的私钥。

 

解决方法:

进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及 ddms.cfg。

(不同环境下的目录可能略有不同,可在eclipse中查找此路径:Window->Preferences->Android->Build下 Default debug keystore)

然后重新导入即可。

原文:http://www.cnblogs.com/yyangblog/archive/2011/01/07/1929657.html

关于短信SMS的class

最近在研究GSM通信模块相关的AT指令时,发现短信部分经常提到个短信的class,不知为何,搜了一下,特此记录:

What are the classes of SM-MT (mobile terminated) messages?

Classes identify the message’s importance as well as the location where it should be stored. There are 4 message classes.
Class 0: Indicates that this message is to be displayed on the MS immediately and a message delivery report is to be sent back to the SC. The message does not have to be saved in the MS or on the SIM card (unless selected to do so by the mobile user).
Class 1: Indicates that this message is to be stored in the MS memory or the SIM card (depending on memory availability).
Class 2: This message class is Phase 2 specific and carries SIM card data. The SIM card data must be successfully transferred prior to sending acknowledgement to the SC. An error message will be sent to the SC if this transmission is not possible.
Class 3: Indicates that this message will be forwarded from the receiving entity to an external device. The delivery acknowledgement will be sent to the SC regardless of whether or not the message was forwarded to the external device.

Eclipse配合ADT为Android项目添加Proguard混淆的简单新方法

之前我曾经写过一篇如何为用ADT创建的Android项目添加Proguard混淆支持的文章(
为Eclipse ADT创建的android项目通过ant添加proguard混淆支持
),当时我就说过,相信随着Google Android的不断更新发展以及Eclipse ADT插件的不断改进,总有一天,做Android项目时能够和J2ME项目一样方便的一键打包混淆。现在新版的SDK和ADT就已经添加了这样的功能(SDK Tools中已经整合了Proguard的发行包,连这步配置都省了!),虽然还不是一键,但也就是小改一个配置文件的事,相对以前的手改ant xml build file的做法来说已经是极大的简化了添加混淆支持的难度了。

先说说我写这篇文章时用的开发环境:Eclipse 3.5.2+ADT 9.0.0+SDK Tools R9+SDK Platform-tools R2。

声明我不保证在其他版本的IDE ADT和SDK Tools下我的方法是否可行且不会产生问题!

Continue reading…