昨天早上醒来,有人邮件我说,客户端报一个 错误 Uncaught Exception:java.lang.Error

我想,又是什么黑莓的问题吧,所以就草草的回复了这个事情,后来发现,报告的人挺多的,而且都是安装了新浪微博的最新的黑莓客户端导致的,这下紧张了,记得看《创业家》里面有一句话,”永远不要和(新浪)微博竞争“,这回不但竞争了,还TMD冲突了,这下玩完儿了。
火速解决这个问题!首先是在模拟器上测试,立刻发现是
import net.rim.device.api.i18n.ResourceBundle;
...
public static ResourceBundle sm_local = ResourceBundle.getBundle(localResource.BUNDLE_ID, localResource.BUNDLE_NAME);
public static final String[] fsm_apnListString =
{
sm_local.getString(yblocalResource.APN_LIST_NULL),
sm_local.getString(yblocalResource.APN_LIST_CMNET) + " cmnet",
sm_local.getString(yblocalResource.APN_LIST_UNINET) + " uninet",
sm_local.getString(yblocalResource.APN_LIST_3GNET) + " 3gnet",
sm_local.getString(yblocalResource.APN_LIST_CTNET) + " ctnet",
};
其中运行到第一个就不行了,调试的时候直接代码中断到这一行,继续运行,就抛出所谓的 java.lang.Error 异常了。我第一感觉就是,和新浪客户端的ID重复了,只是一种感觉,没有依据,就找到 localResource.java 这个文件:
public interface localResource {
// Hash of: "local.local".
long BUNDLE_ID = 0xxxxxxxxxxxxxxxxL;
String BUNDLE_NAME = "local.local";
...
把这个值告诉了开发新浪微博黑莓客户端技术人员,因为我没有看到那个 // Hash of: “local.local”. 的提示,认为RIM会把把包的资源路径加入进来参与生成的,比如什么com.yuchting.yuchberry.client 等等字符串标示。
但是惊人的是,在新浪技术人员的查看下,发现咱两的ID是一致的,当时我就蒙了——怎么可能?后来想到的原因,很可能是他们新加入的模块的开发工程师和我看了同一套教程,都命名为 local.local 那么这个字符串的标示的hash不就一样了么?
于是吧local.local 换成了 local.yblocal 就OK了,大量的替换,svn的版本处理迎面扑来。
RIM 的RUNTIME 没有android context 的概念,完全都是JVM大环境下的操作,读取另一个已经注册的资源的不存在的符号,当然会over。不管怎么样,这个事情在我积极的更改、发布之后就告一段落了,虚惊一场,虽然最后在晚上10点发布完毕之后还出了点小插曲,总归于要结束了,可以好好睡一觉了……
第二天……
可是事情还没有完,早上起来,发现微博粉丝多了40个,下午到了60个,注册用户两天上升100多个,同步数稳步上升,好现象!很happy,准备把安卓版本的上传附件功能写完了。
随手打开GAE,靠!发送邮件的 quota 又到限制了,刚刚才把GAE的Billing关闭(不然每周$2.1,实在受不了),总不能让我又开开吧,昨天才研究了php怎么发送邮件,今天就要赶上自己写一个?为啥都在我刚刚研究的时候就出问题了呢?谁给我测试时间?
急急忙忙的吧php的发送邮件功能添加上,前两天才研究的BlueHost 邮件系统,开了一个邮件帐户 noreply@yuchs.com ,php发送邮件代码,立刻派上用场,直接上!
<?php
if(!isset($_GET['to']) ){
echo "<H1>403 FORBIDDEN</H1> ";
exit;
}
$to = $_GET['to'];
if(!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $to)){
echo '\'' . $_GET['to'] . '\' is not mail address form.';
exit;
}
$from = "noreply@yuchs.com";
$reply = "yuchberry@gmail.com";
$messageID = '<' . rand() . '-' . date("Y_m_d_H_i_s") . '@yuchs.com>';
$headers = 'MIME-Version: 1.0' . "\r\n".
'Content-type: text/plain; charset=utf-8' . "\r\n".
'From: '. $from . "\r\n".
'Reply-To: '. $reply . "\r\n".
'Message-Id: '. $messageID . "\r\n";
$subject = "=?UTF-8?B?".base64_encode("语盒官方服务提醒")."?=";
$content = '你的语盒使用时间已经快到了,稍等一段时间后服务器会暂停服务。'."\r\n".
'你可以登录官方网站 http://www.yuchs.com/ 进行时间的充值,继续使用,或者查看FAQ,进行自架服务器使用。' . "\r\n".
'感谢你对语盒的关注和支持!' . "\r\n".
"\r\n".
'语盒开发者敬上!';
$result = mail($to, $subject, $content, $headers);
if($result){
echo 'OK';
}else{
echo 'Failed';
}
?>
这段代码是不是要求在自己的web主机上开启一个邮件帐户,我现在还是不知道,反正我是在web主机上加了一个邮件帐户 noreply@yuchs.com ,总之能解决问题就行。乒乓五四又一天过去了,终于,帐户邮件又能发送了。
哎,一天的劳命哪~