Auxo在中文环境下的Bug以及修复

Auxo在中文环境下的Bug以及修复

# Tech

Auxo插件因为绚丽的外观和方便的功能,在各大iOS论坛被推广着。也深受iOS用户的喜爱。

Auxo效果图

这款插件在Weiphone上的介绍:Auxo介绍

我也在Bigboss源付费购买了这个插件,可是之后发现它有Bug。因为我经常用Sparrow这款app来后台运行,以便随时接受邮件推送,所以我不希望每次它被关掉(有的时候,会不小心关掉),而这款插件提供了一个功能叫做VIP List(在 设置 - Auxo - Configuration - Prompt Options 中设置),加入了这个List 的App,在用户关闭的时候会弹出提示,让用户确认。

VIP List 设置

很长时间以来,我的这个功能一直无法正常使用,因为一旦我在Auxo中下滑那些在VIPList中的App时,系统会直接Respring(菊花),然后进入安全模式。
系统Respring

经验证,在很多朋友的iOS设备上也都遇到了这个问题。下面来讲讲如何修复这个bug:

因为最近把iphone的系统语言改成了英文,之后发现这个功能正常了,所以推测这个问题出在语言环境配置文件上。所以在找到了中文和英文的文件做了细致的对比

这个是英语语言配置文件:位置在:/Library/Application Support/AuxoSwitcher/Content/Resources/en.lproj/Localizable.strings

1
2
3
4
5
6
7
8
9
10
"CURRENTLY_PLAYING“ = ”Currently Playing";
"CURRENTLY_PLAYING_PROMPT“ = ”This app is currently in use. Are you sure you want to close it?";
"MAYBE_LATER“ = ”Maybe Later";
“NO” = “No”;
"NO_MEDIA“ = ”No Media";
"REMOVE_ALL_PROMPT“ = ”Do you want to remove all apps from the multitasking tray?";
"SHOW_GUIDE“ = ”Show Guide";
"WELCOME_PROMPT“ = ”Thank you for purchasing!nWant to learn more about Auxo?";
"WELCOME_TITLE“ = ”Welcome to Auxo";
“YES” = “Yes”;

这个是中文简体语言配置文件:位置在:/Library/Application Support/AuxoSwitcher/Content/Resources/zh-Hans.lproj/Localizable.strings

1
2
3
4
5
6
7
8
9
10
11
12
13
"YES" = "是";
"NO" = "否";
"MAYBE_LATER" = "迟一会";
"SHOW_GUIDE" = "显示指南";
"REMOVE_ALL_PROMPT" = "是否确定关闭所有在多工作业的应用程式?";
"CURRENTLY_PLAYING_PROMPT" = "此应用程式正在使用中。是否确定把它关闭?";
"WELCOME_TITLE" = "欢迎来到 Auxo";
"WELCOME_PROMPT" = "多谢阁下购买!n想知更多关于 Auxo?";
"NO_MEDIA" = "没有媒体";
"CURRENTLY_PLAYING" = "正在播放";

在英文环境下,在用户关闭VIP List当中的程序时,系统给出的提示是Are you sure you want to close it?也就是说系统给的提示是从CURRENTLY_PLAYING_PROMPT这个字段中截取了后半部分,显示出来给用户提示。

所以我推测问题出现在以上两个文件的高亮行句中的标点符号上,英文版里是”. “(注意有空格),而中文版里是”。”(无空格). 事实证明我的猜测也是对的,我将中文文件里的句号改为了英文句号加空格,然后,将系统respring(不会的同学可以直接重启),就一切正常了。

我推测这个问题应该是CodeMonkey在做本地化的时候未考虑到我们天朝文字的特殊性,标点与西文不同,而且不加空格。导致在中文环境下,系统找不到对应的分隔符来提取后半部分,导致系统崩溃,进入安全模式。

Made with in London

Copyright © 2016 iLeoDo All Rights Reserved.