??xml version="1.0" encoding="utf-8" standalone="yes"?>激情综合网站,欧美激情精品久久久久久变态 ,亚洲无线看天堂avhttp://www.aygfsteel.com/anymobile/category/37565.htmlMake Anything Mobile!zh-cnWed, 15 Dec 2010 15:44:32 GMTWed, 15 Dec 2010 15:44:32 GMT60Android Widget 设计与开?/title><link>http://www.aygfsteel.com/anymobile/articles/340831.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Wed, 15 Dec 2010 13:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340831.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340831.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340831.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340831.html</trackback:ping><description><![CDATA[     摘要: 作者:徐徏(netpirate@gmail.comQ?旉Q?2010/12/15 来自Q?http://www.anymobile.org Widget杂谈Q最早Widget是指在PC的桌面上的小H口E序QWeb上的先行者似乎是YahooQ;当然QOPhone也搞了一套WidgetQHTML+CSS的东东?我们q里谈的所谓WidgetQ就是窗口小部gQAndroid SDK?.5?..  <a href='http://www.aygfsteel.com/anymobile/articles/340831.html'>阅读全文</a><img src ="http://www.aygfsteel.com/anymobile/aggbug/340831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-15 21:44 <a href="http://www.aygfsteel.com/anymobile/articles/340831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 安装软g后执行“OPEN”引LIntent血案(pȝBUGQ?/title><link>http://www.aygfsteel.com/anymobile/articles/340723.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Tue, 14 Dec 2010 15:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340723.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340723.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340723.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340723.html</trackback:ping><description><![CDATA[     摘要: ~写Q徐建祥(netpirate@gmail.com) 日期Q?010/12/13 |址Qhttp://www.anymobile.org 打开E序的入口有很多个: shell 命o行运行; Launcher待机界面执行Q?状态通知栏运行; 桌面快捷方式q行Q?软g中调用运行; 安装软g后执?#8220;OPEN”q行Q?前面几项Q调用程序的代码如下Q参考:com...  <a href='http://www.aygfsteel.com/anymobile/articles/340723.html'>阅读全文</a><img src ="http://www.aygfsteel.com/anymobile/aggbug/340723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-14 23:11 <a href="http://www.aygfsteel.com/anymobile/articles/340723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android: ~放囄文g引v的OOM异常http://www.aygfsteel.com/anymobile/articles/340722.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 15:10:00 GMThttp://www.aygfsteel.com/anymobile/articles/340722.htmlhttp://www.aygfsteel.com/anymobile/comments/340722.htmlhttp://www.aygfsteel.com/anymobile/articles/340722.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340722.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340722.html阅读全文

Xu Jianxiang 2010-12-14 23:10 发表评论
]]>
Android 软g的状态栏图标通知处理http://www.aygfsteel.com/anymobile/articles/340720.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 15:08:00 GMThttp://www.aygfsteel.com/anymobile/articles/340720.htmlhttp://www.aygfsteel.com/anymobile/comments/340720.htmlhttp://www.aygfsteel.com/anymobile/articles/340720.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340720.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340720.html阅读全文

Xu Jianxiang 2010-12-14 23:08 发表评论
]]>
Android ȝ用户的灰色头像处?/title><link>http://www.aygfsteel.com/anymobile/articles/340721.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Tue, 14 Dec 2010 15:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340721.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340721.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340721.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340721.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">~写Q徐建祥(netpirate@gmail.com)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">日期Q?010/11/22</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">|址Qhttp://www.anymobile.org</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">主要涉及两个技术点Q?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">1、图标加灰色qoQ?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">2、android的图片资源默认是静态的Q单实例Q如果两个IM好友的头像一P最单的都是用的软g自带头像Q有一个在U,一个离U,直接改变头像的灰度,则两个用L头像都会变灰或者在U,{案是:Drawable.mutate()?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">代码如下Q?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "></p> <div id="wmqeeuq" class="dp-highlighter" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; background-color: #e7e5dc; width: 913px; overflow-x: auto; overflow-y: auto; margin-top: 18px !important; margin-right: 0px !important; margin-bottom: 18px !important; margin-left: 0px !important; padding-top: 1px; "> <div id="wmqeeuq" class="bar" style="padding-left: 45px; "> <div id="wmqeeuq" class="tools" style="padding-top: 3px; padding-right: 8px; padding-bottom: 10px; padding-left: 10px; font: normal normal normal 9px/normal Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: #f8f8f8; border-left-color: #6ce26c; "><a style="text-decoration: none; color: #a0a0a0; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 10px; margin-bottom: 0px; margin-left: 0px; font-size: 9px; background-position: initial initial; background-repeat: initial initial; ">view plain</a><a style="text-decoration: none; color: #a0a0a0; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 10px; margin-bottom: 0px; margin-left: 0px; font-size: 9px; background-position: initial initial; background-repeat: initial initial; ">copy to clipboard</a><a style="text-decoration: none; color: #a0a0a0; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 10px; margin-bottom: 0px; margin-left: 0px; font-size: 9px; background-position: initial initial; background-repeat: initial initial; ">print</a><a style="text-decoration: none; color: #a0a0a0; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: inherit; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 10px; margin-bottom: 0px; margin-left: 0px; font-size: 9px; background-position: initial initial; background-repeat: initial initial; ">?</a></div> </div> <ol start="1" class="dp-j" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: decimal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; list-style-position: initial; list-style-image: initial; background-color: #ffffff; color: #5c5c5c; "> <li id="wmqeeuq" class="alt" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #ffffff; color: inherit; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">Drawable mDrawable = context.getResources().getDrawable(R.drawable.face_icon);  </span></span></li> <li id="wmqeeuq" class="" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #f8f8f8; color: #5c5c5c; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "><span id="wmqeeuq" class="comment" style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: #008200; background-color: inherit; ">//Make this drawable mutable.</span><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">  </span></span></li> <li id="wmqeeuq" class="alt" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #ffffff; color: inherit; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "><span id="wmqeeuq" class="comment" style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: #008200; background-color: inherit; ">//A mutable drawable is guaranteed to not share its state with any other drawable.</span><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">  </span></span></li> <li id="wmqeeuq" class="" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #f8f8f8; color: #5c5c5c; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">mDrawable.mutate();  </span></li> <li id="wmqeeuq" class="alt" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #ffffff; color: inherit; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">ColorMatrix cm = <span id="wmqeeuq" class="keyword" style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: #006699; background-color: inherit; font-weight: bold; ">new</span><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "> ColorMatrix();  </span></span></li> <li id="wmqeeuq" class="" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #f8f8f8; color: #5c5c5c; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">cm.setSaturation(<span id="wmqeeuq" class="number" style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: #c00000; background-color: inherit; ">0</span><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">);  </span></span></li> <li id="wmqeeuq" class="alt" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #ffffff; color: inherit; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">ColorMatrixColorFilter cf = <span id="wmqeeuq" class="keyword" style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: #006699; background-color: inherit; font-weight: bold; ">new</span><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; "> ColorMatrixColorFilter(cm);  </span></span></li> <li id="wmqeeuq" class="" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 3px !important; padding-bottom: 0px !important; padding-left: 10px !important; list-style-type: decimal-leading-zero; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: solid; border-width: initial; border-color: initial; list-style-position: outside !important; list-style-image: initial; border-left-width: 3px; border-left-color: #6ce26c; background-color: #f8f8f8; color: #5c5c5c; line-height: 14px; "><span style="line-height: 18px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; color: black; background-color: inherit; ">mDrawable.setColorFilter(cf);  </span></li> </ol> </div>   <p> </p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">OVERQ?/p> </span> <img src ="http://www.aygfsteel.com/anymobile/aggbug/340721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-14 23:08 <a href="http://www.aygfsteel.com/anymobile/articles/340721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 安装文g.apk反编?/title><link>http://www.aygfsteel.com/anymobile/articles/340719.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Tue, 14 Dec 2010 15:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340719.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340719.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340719.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340719.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">~写Q徐建祥(netpirate@gmail.com)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">日期Q?010/10/12</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">|址Qhttp://www.anymobile.org</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">反编译包括:</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    odex+apk->apk</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack xml</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack drawable</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack class</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">涉及软gQ?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    apktool</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    dex2jar</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    jdgui</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    AXMLPrinter2</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    smali</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    Auto-sign</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--待箋……</p> </span> <img src ="http://www.aygfsteel.com/anymobile/aggbug/340719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-14 23:07 <a href="http://www.aygfsteel.com/anymobile/articles/340719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XX for Android Design 设计文档http://www.aygfsteel.com/anymobile/articles/340718.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 15:03:00 GMThttp://www.aygfsteel.com/anymobile/articles/340718.htmlhttp://www.aygfsteel.com/anymobile/comments/340718.htmlhttp://www.aygfsteel.com/anymobile/articles/340718.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340718.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340718.html

XX for Android Design 设计文档

[ Androidq_XX视频聊天/XX for Android]

日期: 2010.07.20. 

~写: 徐徏?nbsp;

|址Qhttp://www.anymobile.org 

修改记录Q?nbsp;

2010-07-20 徐徏?nbsp;

2010-08-06 徐徏?nbsp;

??nbsp;

1. 目概述 

1.1. 功能介绍 

1.2. 开发环?/p>

1.3. q行环境 

1.4. 名词解释 

2. pȝ架构 

3. 模块设计 

3.1. Android消息通讯 

3.1.1. Intent意图 

3.1.2. Broadcast Receiverq播接受?/p>

3.1.3. Thread MessageU程消息 

3.1.4. callback机制 

3.1.5. Observer观察者模?nbsp;

3.1.6. Listener监听?nbsp;

3.2. AV引擎?nbsp;

3.3. 协议?nbsp;

4. 体系l构 

5. 程设计 

5.1. 注册 

5.2. d

5.3. 注销 

5.4. 点对点聊?nbsp;

5.4.1. 发送文字聊天数?nbsp;

5.4.2. 接受文字聊天数据 

5.4.3. 发送音视频聊天数据 

5.4.4. 接受韌频多媒体数据 

5.4.5. d关闭聊天 

5.4.6. Ҏ关闭聊天 

5.5. 短信邀误频聊?nbsp;

5.6. 聊天室聊?nbsp;

5.7. 聊天室{点对点聊?nbsp;

5.7.1. d邀误友聊?nbsp;

5.7.2. 接受聊友聊天邀?nbsp;

5.8. WAP用户以及TCP代理服务?/p>

6. 接口设计 

6.1. JNI 

6.2. PTS 

6.3. AV Engine 

7. 数据存储 

7.1. Shared Preferences 

7.2. SQLite Database 

8. UL相关 

8.1. io输入输出相关 

8.2. os操作pȝ相关 

8.3. timer定时?nbsp;

8.4. socket|络 

8.5. log日志 

参考文?nbsp;

1. 目概述 

1.1.功能介绍

XX视频聊天手机Q在2.5G|络上实现手频互动,让广大手机用户n受到3G功能。实现全球互通,无需漫游费,使得通讯费用大ؓ降低Q此外,也支持手机对PC的双向视频聊天,从而Z可以随时、随?#8220;见面”Q让世界变的更小?nbsp;

XX for Android是视频聊天Y件XX的Android版本Q实C手机用户与艾c友或通讯录好友点对点视频、语韟뀁文字聊天,另外用户可以使用视频、语韟뀁文字聊天室功能?nbsp;

1.2.开发环?nbsp;

Windows XP + Cygwin / Ubuntu 10.3 

JAVA: 

IDE: JDK 1.5 + Eclipse3.5 + ADT0.9.6 + CDT 1.0.0 

SDK: Android SDK 

NDK: Android-NDK-r3 

C/C++: 

C? BSD C库精?bionic 

1.3.q行环境 

Androidq_1.5及以上固件版?/p>

1.4.名词解释

【Android】OHAl织开发的Q包括操作系l、中间g和核心应用的Ud讑֤软g集合?/p>

2.pȝ架构

主要包括4个模块层ơ:UI交互层;JNI接口层;核心应用层,以及pȝ适配层?/p>

Q图略)

UI交互层:

主要实现了hZ互界面,以及一些框架类{,通过不同的场景完成品功能,每个场景可以包含多个界面Q每个场景可以处理特定的通知消息?/p>

JNI接口层:

衔接Java与C/C++代码层,是UI交互层与PTS协议模块和AV引擎交互的枢U,提供自上而下的正向调用,以及自下而上的callback调用机制?/p>

pȝ适配层:

提供pȝq_相关的wrapper实现Q如io、os、timer、socket{?/p>

核心应用层:

UL的核心库Q包括协议库和AV引擎库?/p>

Xu Jianxiang 2010-12-14 23:03 发表评论
]]>
Android x通讯软g开发日志系?/title><link>http://www.aygfsteel.com/anymobile/articles/340713.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Tue, 14 Dec 2010 14:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340713.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340713.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340713.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340713.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">~写Q徐建祥(netpirate@gmail.com)<br /> 日期Q?010/10/12<br /> |址Qhttp://www.anymobile.org</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">最q几个月一直在负责某即旉讯软g的智能手机^台开发工作(已经有手机厂商和q营商的定制版,q日发布公版)Q参考了iphone的设计风|以及QQ for Android的功能设计,代码完全自主开发,主要涉及以下斚wQ?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--调研Ҏ</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">() --> <<XX for Android porting UL文档>></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--需?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">() --> <<XX for Android UI Spec 产品设计文档>></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--设计</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">() --> <<XX for Android design 设计文档>></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--开?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()AndroidManifest讄Qdebugable/launchModel/task/minSDK/...</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()Ƣ迎界面与初始化:手机?|络/SD?IMEI/IMSI/ACTIVE NETWORK/WIFI/SDCard)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()注册/d界面与动?frame animation)、数据存?DB & Share Proferences)、网l?TCP/CP & HTTP)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()ȝ面与TAB设计(TabHost & TabWidget)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()更换皮肤{主?Theme)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()呼叫窗?Custom Dialog)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()工具?Menu layout & onClick)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()两聊天室列?GroupList & ChildView)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()电话?Contact v1.0 & Contact v2.0)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()资料讄(Radio & EditView & CheckBox)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()消息表情(GridView & SpanningString)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()软gq{到后収ͼ在状态栏昄软g图标(Statusbar)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()软g更新--HTTP接口;XML数据格式解析Q多U程下蝲QY件覆盖安?XML Parser & MultiThread)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()手机Ll定与短信监控器(SMS Observer)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()捕获按键QHOME/BACK/SEARCHQon ACTIVITY & DIALOGQ后退键可以通过onKeyDown捕获Q搜索键可以通过onDispathEventhQ其会dismiss对话?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()相机的本地预览竖屏窗口,默认只支持横屏预?Camera Preview)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()聊天与消息机?listener/Callback/Intent/Handler Message/Thread Message)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()JNI & AIDL</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()自定义组?Activity/Button/Dialog/ListView/In-Out)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()OpenGL & 3D</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--试 --> <<XX for Android v0.X.X 试报告>></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()Eclipse Debug(USB / Serial port)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()模拟发送短信和电话呼入(ddms / command)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()抓日志与截屏(adb & ddms & logcat)</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--发布 --> <<XX for Android Deploy 部v文档>></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()MD5{编?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()软g源代码؜?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()ANT脚本</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">()</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">以上开发部分需l合软g源码CZQ待l?#8230;…</p> </span> <img src ="http://www.aygfsteel.com/anymobile/aggbug/340713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-14 22:45 <a href="http://www.aygfsteel.com/anymobile/articles/340713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Introduction to Android RILDhttp://www.aygfsteel.com/anymobile/articles/340711.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 14:44:00 GMThttp://www.aygfsteel.com/anymobile/articles/340711.htmlhttp://www.aygfsteel.com/anymobile/comments/340711.htmlhttp://www.aygfsteel.com/anymobile/articles/340711.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340711.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340711.html

整理Q徐建祥(netpirate@gmail.com)
日期Q?009/09/21
|址Q?a style="text-decoration: none; color: #336699; ">http://www.anymobile.org

初始化流E,d口init.rc, rild.c中的main函数Q主要完成三个Q务:
1. 开启libril.so中的event机制Q?在RIL_startEventLoop中,是最核心的由多\I/O驱动的消息@环?br /> 2. 初始化librefrence_ril.soQ也是跟硬件或模拟gmodem通信的部分(后面l一U硬ӞQ?通过RIL_Init函数完成?br /> 3. 通过RIL_Init获取一l函数指针RIL_RadioFunctionsQ?q过RIL_register完成注册Qƈ打开接受上层命o的socket通道?/p>

RIL的线E和事g

一共创Z3个线E,5个事Ӟ
s_wakeupfd_event(s_fdWakeupRead,pipe),
s_listen_event(s_fdListen,socket RILD),
s_commands_event(accept(s_fdListen...)),
s_debug_event(s_fdDebug,socket RILD-debug),
-1.

W一个线Es_tid_dispath处理所有fdQsocketQpipeQportQ对应的事g处理Q处理和上层RIL.JAVA联系是第一个线E和对应?个事件?br /> W二个线Es_tid_mainloop和第三个U程s_tid_reader通过g层连接的fdQ来处理readline,processlineQ处理下层硬件相兟?/p>

Xu Jianxiang 2010-12-14 22:44 发表评论
]]>
Android 手机之:Huawei_C8600http://www.aygfsteel.com/anymobile/articles/340712.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 14:44:00 GMThttp://www.aygfsteel.com/anymobile/articles/340712.htmlhttp://www.aygfsteel.com/anymobile/comments/340712.htmlhttp://www.aygfsteel.com/anymobile/articles/340712.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340712.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340712.html

~写Q徐建祥(netpirate@gmail.com)
日期Q?010/08/12
|址Q?a style="text-decoration: none; color: #336699; ">http://www.anymobile.org

Huawei_C8600外Ş看还可以Q硬仉|如下:

[ro.product.board]: [C8600]
[ro.product.brand]: [China Telecom]
[ro.product.manufacturer]: [HUAWEI]
[ro.board.platform]: [msm7k]
[ro.config.browser_useragent1]: [Mozilla/5.0 (HW-C8600/C8600V100R001C92B225;U;Android/2.1;]
[ro.config.browser_useragent2]: [320*480;CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17]
[ro.build.description]: [MSM7x25-user 2.1-update1 ERE27 20100707 ota-rel-keys,release-keys]







它主要有2Ҏ较有吸引力:

1、自动安装驱动程序;
该机型通过USB的方式(手机当U盘用Q,d安装SD卡下面的可执行文Ӟ安装驱动?br />
q种Ҏ的好处:使用快捷Q无需随记附赠驱动E序
q种Ҏ的缺点:SD卡的不少E序其实都有病毒的特征,360安全软g后提示是Nnewheur_PE病毒?br />


2、KVM虚拟?br /> 该机型安装了日本贵司的KVMQJBlendQ可以选择扫描SD卡检jad/jar文gQ有了类似的机子QJ2MEq_UL的问题解x咯,使用KVM的KNI调研动态库?br />




Xu Jianxiang 2010-12-14 22:44 发表评论
]]>
Introduction to Android Webkithttp://www.aygfsteel.com/anymobile/articles/340710.htmlXu JianxiangXu JianxiangTue, 14 Dec 2010 14:43:00 GMThttp://www.aygfsteel.com/anymobile/articles/340710.htmlhttp://www.aygfsteel.com/anymobile/comments/340710.htmlhttp://www.aygfsteel.com/anymobile/articles/340710.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/340710.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/340710.html

整理Q徐建祥(netpirate@gmail.com)
日期Q?009/09/09
|址Q?a style="text-decoration: none; color: #336699; ">http://www.anymobile.org

市面上主的览?
a. IEQ内核TridentQ?br /> b. FireFoxQ内核:GeckoQ?br /> c. Safari, Google ChromeQ内核:WebkitQ?br /> d. OperaQ内?Presto?/p>


Webkit Architecture

Android Browser 主要分成三个部分:

1. Webkit Engine (C++):JavascriptCore,WebCore,Webkit;
2. Framework WebView (Java); 
3. Browser app (java).

1. JavaScriptCoreQ?br /> Javascript 引擎
KJSq化到Squirrel Fish
基本的模板库WTF
基本的正则表辑ּ解析模块PCRE
基本~码转换模块Q依赖ICUq行
JS解析/~译引擎
JSq行?/p>

2. WebCore----render engineQ?br /> 解析面Q生成DOM tree ?render treeQ最lrender整个面到background?/p>

|络接口装
HTML解析引擎
XML解析引擎
CSS解析引擎
JS 客户端对象封?br /> |页渲染引擎
BackEnd装与实?br /> SVG
HTML Editing
Plugins
|页内容处理QImage/Icon
。。?/p>

3. Webkit-------和^台相关的background实现Q?br /> 里面包括了android q_的实玎ͼ具体是通过JNI和framework 里面的webview?/p>

WebCore的高层封?br /> 提供与BackEnd一直的q_支撑
提供lWebCore用户操控相关的支撑接?/p>

source analysisQ?/p>

1. bindings  ---javaScript 中对象和DOM对象q行l定Q比如window对象和document对象
2. bridge ----javascript对象和自定义的对象绑?br /> 3. css -------实现了css 2.0 的标?br /> 4. dom-------DOM树的相关对象
5. editing-------所有于Edit相关功能Q比如html中的~辑?br /> 6. html -------html 语言的解?br /> 7. loader ------- 加蝲|页资源以及CacheQFrameLoader ImageLoader
8. platform----- 和^台有关的Q比?囑փdecoderQ图形的l制Q网l操作,字体{?br /> 9. plugin------实现了基于Netscape?NPAPI (Netscape Plugin Application Programming Interface ) 的框?br /> 10. rendering--------- render tree 相关对象
11. resource ------PC 览器safair 用到的资源,对于android来说没用
12. svg ---------- svg 语言的解?br /> 13. wml----------- wml 语言的解?br /> 14. xml------------xml 语言的解析以及XSLT 转换Q需要libxslt

软g应用

Browsers
-Safari
-Google Chrome/Chromium
-OmniWeb
-Osb-browser – Nokia
-Web Browser for S60 – Nokia
-QT Browser Engine

E-mail ClientsQ用Webkit 作Web 内容处理
-Entourage 2008 – Microsoft (for Mac)
-Mail-Apple
-Mailplane  特定的Gmaill端

Instant Messenger/Chat ClientsQ用WebkitҎ息进行渲染和样式?br /> -iChat AV – Apple
-MSN Messenger – Microsoft (Mac)
-Yahoo! Messenger

RSS ReadersQ用Webkit来处理和现实新闻摘要Q以及Feedq接到的完整文档
-MiNews
-NetNewsWire
-NewsFire
-PixelNews



Xu Jianxiang 2010-12-14 22:43 发表评论
]]>
XXXX软gAndroidq_ULPorting说明?/title><link>http://www.aygfsteel.com/anymobile/articles/340708.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Tue, 14 Dec 2010 14:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/340708.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/340708.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/340708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/340708.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/340708.html</trackback:ping><description><![CDATA[     摘要: 作者:徐徏?netpirate@gmail.com) 日期Q?010/05/06 |址Qhttp://www.anymobile.org ?nbsp; ?1Q项目简?#8230;……………………………………...  <a href='http://www.aygfsteel.com/anymobile/articles/340708.html'>阅读全文</a><img src ="http://www.aygfsteel.com/anymobile/aggbug/340708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-12-14 22:41 <a href="http://www.aygfsteel.com/anymobile/articles/340708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 安装文g.apk反编?/title><link>http://www.aygfsteel.com/anymobile/articles/334503.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 11 Oct 2010 19:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/334503.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/334503.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/334503.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/334503.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/334503.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; "> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">~写Q徐建祥(netpirate@gmail.com)<br /> 日期Q?010/10/12<br /> |址Qhttp://www.anymobile.org<br /> </p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "><br /> </p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">反编译包括:</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    odex+apk->apk</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack xml</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack drawable</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    crack class</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "></p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">涉及软gQ?/p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    apktool</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    dex2jar</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    jdgui</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    AXMLPrinter2</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    smali</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">    Auto-sign</p> <p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; ">--待箋……</p> </span> <img src ="http://www.aygfsteel.com/anymobile/aggbug/334503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-10-12 03:01 <a href="http://www.aygfsteel.com/anymobile/articles/334503.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XX for Android Design 设计文档http://www.aygfsteel.com/anymobile/articles/334501.htmlXu JianxiangXu JianxiangMon, 11 Oct 2010 18:43:00 GMThttp://www.aygfsteel.com/anymobile/articles/334501.htmlhttp://www.aygfsteel.com/anymobile/comments/334501.htmlhttp://www.aygfsteel.com/anymobile/articles/334501.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/334501.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/334501.html阅读全文

Xu Jianxiang 2010-10-12 02:43 发表评论
]]>
Android x通讯软g开发日志系?/title><link>http://www.aygfsteel.com/anymobile/articles/334500.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Mon, 11 Oct 2010 18:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/334500.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/334500.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/334500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/334500.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/334500.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">~写Q徐建祥</span><span lang="EN-US">(netpirate@gmail.com)<o:p></o:p></span></p> <p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">日期Q?/span><st1:chsdate year="2010" month="10" day="12" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US">2010/10/12</span></st1:chsdate></p> <p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">|址Q?/span><span lang="EN-US">http://www.anymobile.org<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">最q几个月一直在负责某即旉讯软g的智能手机^台开发工作(已经有手机厂商和q营商的定制版,q日发布公版)Q参考了</span><span lang="EN-US">iphone</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">的设计风|以及</span><span lang="EN-US">QQ for Android</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">的功能设计,代码完全自主开发,主要涉及以下斚wQ?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">调研Ҏ</span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">() --> <<XX for Android porting </span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">UL文档</span><span lang="EN-US">>><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">需?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">() --> <<XX for Android UI Spec </span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">产品设计文档</span><span lang="EN-US">>><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">设计</span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">() --> <<XX for Android design </span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">设计文档</span><span lang="EN-US">>><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">开?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()AndroidManifest</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">讄Q?/span><span lang="EN-US">debugable/launchModel/task/minSDK/...<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">Ƣ迎界面与初始化:手机?/span><span lang="EN-US">/</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">|络</span><span lang="EN-US">/SD</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">?/span><span lang="EN-US">(IMEI/IMSI/ACTIVE NETWORK/WIFI/SDCard)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">注册</span><span lang="EN-US">/</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">d界面与动?/span><span lang="EN-US">(frame animation)</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">、数据存?/span><span lang="EN-US">(DB & Share Proferences)</span><span style="font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"">、网l?/span><span lang="EN-US">(TCP/CP & HTTP)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">ȝ面与</span><span lang="EN-US">TAB</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">设计</span><span lang="EN-US">(TabHost & TabWidget)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">更换皮肤{主?/span><span lang="EN-US">(Theme)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">呼叫窗?/span><span lang="EN-US">(Custom Dialog)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">工具?/span><span lang="EN-US">(Menu layout & onClick)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">两聊天室列?/span><span lang="EN-US">(GroupList & ChildView)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">电话?/span><span lang="EN-US">(Contact v1.0 & Contact v2.0)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">资料讄</span><span lang="EN-US">(Radio & EditView & CheckBox)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">消息表情</span><span lang="EN-US">(GridView & SpanningString)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">软gq{到后収ͼ在状态栏昄软g图标</span><span lang="EN-US">(Statusbar)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">软g更新</span><span lang="EN-US">--HTTP</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">接口;</span><span lang="EN-US">XML</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family: "Times New Roman"">数据格式解析Q多U程下蝲QY件覆盖安?/span><span lang="EN-US">(XML Parser & MultiThread)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">手机Ll定与短信监控器</span><span lang="EN-US">(SMS Observer)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">捕获按键Q?/span><span lang="EN-US">HOME/BACK/SEARCH</span><span style="font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"">Q?/span><span lang="EN-US">on ACTIVITY & DIALOG</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">Q后退键可以通过</span><span lang="EN-US">onKeyDown</span><span style="font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"">捕获Q搜索键可以通过</span><span lang="EN-US">onDispathEvent</span><span style="font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"">hQ其?/span><span lang="EN-US">dismiss</span><span style="font-family:宋体;mso-ascii-font-family: "Times New Roman";mso-hansi-font-family:"Times New Roman"">对话?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">相机的本地预览竖屏窗口,默认只支持横屏预?/span><span lang="EN-US">(Camera Preview)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">聊天与消息机?/span><span lang="EN-US">(listener/Callback/Intent/Handler Message/Thread Message)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()JNI & AIDL<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">自定义组?/span><span lang="EN-US">(Activity/Button/Dialog/ListView/In-Out)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()OpenGL & 3D<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">试</span><span lang="EN-US"> --> <<XX for Android v0.X.X </span><span style="font-family: 宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">试报告</span><span lang="EN-US">>><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()Eclipse Debug(USB / Serial port)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">模拟发送短信和电话呼入</span><span lang="EN-US">(ddms / command)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">抓日志与截屏</span><span lang="EN-US">(adb & ddms & logcat)<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US">--</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">发布</span><span lang="EN-US"> --> <<XX for Android Deploy </span><span style="font-family: 宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">部v文档</span><span lang="EN-US">>><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()MD5</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">{编?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">软g源代码؜?/span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()ANT</span><span style="font-family:宋体; mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">脚本</span><span lang="EN-US"><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US">()<o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman"">以上开发部分需l合软g源码CZQ待l?#8230;…</span></p> <img src ="http://www.aygfsteel.com/anymobile/aggbug/334500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-10-12 02:36 <a href="http://www.aygfsteel.com/anymobile/articles/334500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 手机之:Huawei_C8600http://www.aygfsteel.com/anymobile/articles/328724.htmlXu JianxiangXu JianxiangThu, 12 Aug 2010 17:24:00 GMThttp://www.aygfsteel.com/anymobile/articles/328724.htmlhttp://www.aygfsteel.com/anymobile/comments/328724.htmlhttp://www.aygfsteel.com/anymobile/articles/328724.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/328724.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328724.htmlnetpirate@gmail.com)
日期Q?010/08/12
|址Q?a >http://www.anymobile.org

Huawei_C8600外Ş看还可以Q硬仉|如下:

[ro.product.board]: [C8600]
[ro.product.brand]: [China Telecom]
[ro.product.manufacturer]: [HUAWEI]
[ro.board.platform]: [msm7k]
[ro.config.browser_useragent1]: [Mozilla/5.0 (HW-C8600/C8600V100R001C92B225;U;Android/2.1;]
[ro.config.browser_useragent2]: [320*480;CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17]
[ro.build.description]: [MSM7x25-user 2.1-update1 ERE27 20100707 ota-rel-keys,release-keys]







它主要有2Ҏ较有吸引力:

1、自动安装驱动程序;
该机型通过USB的方式(手机当U盘用Q,d安装SD卡下面的可执行文Ӟ安装驱动?br />
q种Ҏ的好处:使用快捷Q无需随记附赠驱动E序
q种Ҏ的缺点:SD卡的不少E序其实都有病毒的特征,360安全软g后提示是Nnewheur_PE病毒?br />


2、KVM虚拟?br /> 该机型安装了日本贵司的KVMQJBlendQ可以选择扫描SD卡检jad/jar文gQ有了类似的机子QJ2MEq_UL的问题解x咯,使用KVM的KNI调研动态库?br />




Xu Jianxiang 2010-08-13 01:24 发表评论
]]>
Introduction to Android RILDhttp://www.aygfsteel.com/anymobile/articles/328593.htmlXu JianxiangXu JianxiangWed, 11 Aug 2010 19:03:00 GMThttp://www.aygfsteel.com/anymobile/articles/328593.htmlhttp://www.aygfsteel.com/anymobile/comments/328593.htmlhttp://www.aygfsteel.com/anymobile/articles/328593.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/328593.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328593.html整理Q徐建祥(netpirate@gmail.com)
日期Q?009/09/21
|址Q?a >http://www.anymobile.org

初始化流E,d口init.rc, rild.c中的main函数Q主要完成三个Q务:
1. 开启libril.so中的event机制Q?在RIL_startEventLoop中,是最核心的由多\I/O驱动的消息@环?br /> 2. 初始化librefrence_ril.soQ也是跟硬件或模拟gmodem通信的部分(后面l一U硬ӞQ?通过RIL_Init函数完成?br /> 3. 通过RIL_Init获取一l函数指针RIL_RadioFunctionsQ?q过RIL_register完成注册Qƈ打开接受上层命o的socket通道?/p>

RIL的线E和事g

一共创Z3个线E,5个事Ӟ
s_wakeupfd_event(s_fdWakeupRead,pipe),
s_listen_event(s_fdListen,socket RILD),
s_commands_event(accept(s_fdListen...)),
s_debug_event(s_fdDebug,socket RILD-debug),
-1.

W一个线Es_tid_dispath处理所有fdQsocketQpipeQportQ对应的事g处理Q处理和上层RIL.JAVA联系是第一个线E和对应?个事件?br /> W二个线Es_tid_mainloop和第三个U程s_tid_reader通过g层连接的fdQ来处理readline,processlineQ处理下层硬件相兟?/p>

Xu Jianxiang 2010-08-12 03:03 发表评论
]]>
Introduction to Android Webkithttp://www.aygfsteel.com/anymobile/articles/328592.htmlXu JianxiangXu JianxiangWed, 11 Aug 2010 18:57:00 GMThttp://www.aygfsteel.com/anymobile/articles/328592.htmlhttp://www.aygfsteel.com/anymobile/comments/328592.htmlhttp://www.aygfsteel.com/anymobile/articles/328592.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/328592.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328592.htmlnetpirate@gmail.com)
日期Q?009/09/09
|址Q?a >http://www.anymobile.org

市面上主的览?
a. IEQ内核TridentQ?br /> b. FireFoxQ内核:GeckoQ?br /> c. Safari, Google ChromeQ内核:WebkitQ?br /> d. OperaQ内?Presto?br />


Webkit Architecture


Android Browser 主要分成三个部分:

1. Webkit Engine (C++):JavascriptCore,WebCore,Webkit;
2. Framework WebView (Java);
3. Browser app (java).

1. JavaScriptCoreQ?br /> Javascript 引擎
KJSq化到Squirrel Fish
基本的模板库WTF
基本的正则表辑ּ解析模块PCRE
基本~码转换模块Q依赖ICUq行
JS解析/~译引擎
JSq行?/p>

2. WebCore----render engineQ?br /> 解析面Q生成DOM tree ?render treeQ最lrender整个面到background?/p>

|络接口装
HTML解析引擎
XML解析引擎
CSS解析引擎
JS 客户端对象封?br /> |页渲染引擎
BackEnd装与实?br /> SVG
HTML Editing
Plugins
|页内容处理QImage/Icon
。。?br />

3. Webkit-------和^台相关的background实现Q?br /> 里面包括了android q_的实玎ͼ具体是通过JNI和framework 里面的webview?/p>

WebCore的高层封?br /> 提供与BackEnd一直的q_支撑
提供lWebCore用户操控相关的支撑接?/p>

source analysisQ?/p>

1. bindings  ---javaScript 中对象和DOM对象q行l定Q比如window对象和document对象
2. bridge ----javascript对象和自定义的对象绑?br /> 3. css -------实现了css 2.0 的标?br /> 4. dom-------DOM树的相关对象
5. editing-------所有于Edit相关功能Q比如html中的~辑?br /> 6. html -------html 语言的解?br /> 7. loader ------- 加蝲|页资源以及CacheQFrameLoader ImageLoader
8. platform----- 和^台有关的Q比?囑փdecoderQ图形的l制Q网l操作,字体{?br /> 9. plugin------实现了基于Netscape?NPAPI (Netscape Plugin Application Programming Interface ) 的框?br /> 10. rendering--------- render tree 相关对象
11. resource ------PC 览器safair 用到的资源,对于android来说没用
12. svg ---------- svg 语言的解?br /> 13. wml----------- wml 语言的解?br /> 14. xml------------xml 语言的解析以及XSLT 转换Q需要libxslt

软g应用

Browsers
-Safari
-Google Chrome/Chromium
-OmniWeb
-Osb-browser – Nokia
-Web Browser for S60 – Nokia
-QT Browser Engine

E-mail ClientsQ用Webkit 作Web 内容处理
-Entourage 2008 – Microsoft (for Mac)
-Mail-Apple
-Mailplane  特定的Gmaill端

Instant Messenger/Chat ClientsQ用WebkitҎ息进行渲染和样式?br /> -iChat AV – Apple
-MSN Messenger – Microsoft (Mac)
-Yahoo! Messenger

RSS ReadersQ用Webkit来处理和现实新闻摘要Q以及Feedq接到的完整文档
-MiNews
-NetNewsWire
-NewsFire
-PixelNews

 



Xu Jianxiang 2010-08-12 02:57 发表评论
]]>
Introduction to Android Power Managementhttp://www.aygfsteel.com/anymobile/articles/328591.htmlXu JianxiangXu JianxiangWed, 11 Aug 2010 18:27:00 GMThttp://www.aygfsteel.com/anymobile/articles/328591.htmlhttp://www.aygfsteel.com/anymobile/comments/328591.htmlhttp://www.aygfsteel.com/anymobile/articles/328591.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/328591.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328591.htmlnetpirate@gmail.com)
日期Q?009/09/16
|址Qhttp://www.anymobile.org

Index
1. Introduction
2. Architecture
3. How to Work
4. Wake Locks
5. Wake Lock Example
6. Music Application

1.Introduction

Android supports its own Power Management (on top of the standard Linux Power Management) designed with the premise that the CPU shouldn't consume power if no applications or services require power. For more information regarding standard Linux power management, please see Linux Power Management Support at http://kernel.org.
Android requires that applications and services request CPU resources with "wake locks" through the Android application framework and native Linux libraries. If there are no active wake locks, Android will shut down the CPU.

2.Architecture




Framework Layer
/frameworks/base/core/java/android/os/PowerManager.java
/frameworks/base/services/java/com/android/server/PowerManagerService.java
/frameworks/base/core/java/android/os/Power.java
/frameworks/base/core/jni/android_os_power.cpp
/hardware/libhardware_legacy/power/power.c
    "/sys/power/wake_lock"
    "/sys/power/wake_unlock"
    "/sys/power/state"
    "/sys/android_power/acquire_partial_wake_lock"
    "/sys/android_power/release_wake_lock"
    "/sys/android_power/request_state"
    … …
Kernel Layer
/drivers/android/power.c
/drivers/power/apm_power.c (Advanced Power Management)


3.How to Work

pȝ正常开机后q入到AWAKE状态,Backlight会从最亮慢慢调节到用户讑֮的亮?pȝscreen off timer(settings->sound & display-> Display settings -> Screen timeout)开始计?在计时时间到之前Q如果有M的activity事g发生,如Touch click, keyboard pressed{事Ӟ则将Reset screen off timer, pȝ保持在AWAKE状态。如果有应用E序在这D|间内甌了Full wake lock,那么pȝ也将保持在AWAKE状态,除非用户按下power key. 在AWAKE状态下如果甉|电量低或者是用AC供电screen off timer旉到ƈ且选中Keep screen on while pluged in选项,backlight会被强制调节到DIM的状态?br /> 如果Screen off timer旉到ƈ且没有Full wake lock或者用h了power keyQ那么系l状态将被切换到NOTIFICATIONQƈ且调用所有已l注册的g_early_suspend_handlers函数Q通常会把LCD和Backlight驱动注册成early suspendcdQ如有需要也可以把别的驱动注册成early suspendQ这样就会在W一阶段被关? 接下来系l会判断是否有partial wake lock acquiredQ如果有则等待其释放Q在{待的过E中如果有user activity事g发生Q系l则马上回到AWAKE状?如果没有partial wake lock acquiredQ则pȝ会马上调用函数pm_suspend关闭其它相关的驱动,让CPUq入休眠状态?br /> pȝ在Sleep状态时如果到M一个Wakeup sourceQ则CPU会从Sleep状态被唤醒,q且调用相关的驱动的resume函数Q接下来马上调用前期注册的early suspend驱动的resume函数Q最后系l状态回到AWAKE状?

Registering Kernel-level Drivers with the PM Driver
#Be notified immediately before power down
android_register_early_suspend(android_early_suspend_t *handler)
#Be notified immediately after power up
android_register_early_resume(android_early_resume_t *handler)
HARDWARE LIGHTS
#define LIGHT_ID_BACKLIGHT          "backlight"
#define LIGHT_ID_KEYBOARD           "keyboard"
#define LIGHT_ID_BUTTONS            "buttons"
#define LIGHT_ID_BATTERY            "battery"
#define LIGHT_ID_NOTIFICATIONS      "notifications"
#define LIGHT_ID_ATTENTION          "attention"
#define LIGHT_ID_BLUETOOTH          "bluetooth"
#define LIGHT_ID_WIFI               "wifi"

4.Wake Locks

Wake locks are used by applications and services to request CPU resources.
Types of Wake Locks:
-ACQUIRE_CAUSES_WAKEUP: Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on.
-FULL_WAKE_LOCK:  The screen and keyboard are on at full brightness
-ON_AFTER_RELEASE: When this wake lock is released, poke the user activity timer
-PARTIAL_WAKE_LOCK: The CPU is running, The screen might not be on.
-SCREEN_BRIGHT_WAKE_LOCK: The screen is on at full brightness; the keyboard backlight will be allowed to go off.
-SCREEN_DIM_WAKE_LOCK: The screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim.

5.Wake Lock Example

1). Acquire handle to the PowerManager service.
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DEVICE_POWER" />

PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);

2). Create a wake lock and specify the power management flags for screen, timeout, etc.

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG);

3). Acquire wake lock.
wl.acquire();

4). Perform operation (play MP3, open HTML page, etc.).

5). Release wake lock.
wl.release();

6.Music Application

/packages/apps/Music/AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />
/packages/apps/Music/src/.../MediaPlayerService.java PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
WakeLock mWakeLock =
    pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,    
   this.getClass().getName());
#Sets this WakeLock is not ref counted.
mWakeLock.setReferenceCounted(false);

#The lock will be released after 30 seconds.
mWakeLock.acquire(30000);

mHandler.sendEmptyMessage(RELEASE_WAKELOCK);
#Release the claim to the CPU or screen being on.
mWakeLock.release();

Reference

Android Platform Development Kit:Power Management
http://www.netmite.com/android/mydroid/development/pdk/docs/power_management.html

Android Power Management(Steve Guo)
http://letsgoustc.spaces.live.com/blog/cns!89AD27DFB5E249BA!526.entry

Android 甉|理(hzdysymbol)
http://blog.csdn.net/hzdysymbol/archive/2009/03/19/4004791.aspx

Linux Power Management Support
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/pm.txt

 



Xu Jianxiang 2010-08-12 02:27 发表评论
]]>
XXXX软gAndroidq_UL说明?/title><link>http://www.aygfsteel.com/anymobile/articles/328588.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Wed, 11 Aug 2010 16:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/328588.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/328588.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/328588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/328588.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/328588.html</trackback:ping><description><![CDATA[     摘要: 作者:徐徏?netpirate@gmail.com) 日期Q?010/05/06 |址Qhttp://www.anymobile.org ?nbsp; ?1Q项目简?#8230;……………………………………...  <a href='http://www.aygfsteel.com/anymobile/articles/328588.html'>阅读全文</a><img src ="http://www.aygfsteel.com/anymobile/aggbug/328588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-08-12 00:24 <a href="http://www.aygfsteel.com/anymobile/articles/328588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android E序的安装、卸载和更新http://www.aygfsteel.com/anymobile/articles/328406.htmlXu JianxiangXu JianxiangTue, 10 Aug 2010 06:00:00 GMThttp://www.aygfsteel.com/anymobile/articles/328406.htmlhttp://www.aygfsteel.com/anymobile/comments/328406.htmlhttp://www.aygfsteel.com/anymobile/articles/328406.html#Feedback4http://www.aygfsteel.com/anymobile/comments/commentRss/328406.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328406.html作者:徐徏?/span>(netpirate@gmail.com)
日期Q?/span>2010/07/28
|址Q?/span>http://www.anymobile.org

 

安装E序QY件从无到有?/span>

卸蝲E序QY件从有到无?/span>

更新E序QY件的覆盖安装Q可以保留原版本的数据,提升软g版本?/span>

 

安装E序的方法:

 

1?span style="font:7.0pt "Times New Roman"">  通过Intent机制Q调出系l安装应用,重新安装应用的话Q会保留原应用的数据?/span>

 

String fileName = Environment.getExternalStorageDirectory() + apkName;

Uri uri = Uri.fromFile(new File(fileName));

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setDataAndType(Uri, application/vnd.android.package-archive");

startActivity(intent);

 

2?span style="font:7.0pt "Times New Roman"">  直接调用安装接口?/span>

 

Uri mPackageURI = Uri.fromFile(new File(Environment.getExternalStorageDirectory() + apkName));

int installFlags = 0;

PackageManager pm = getPackageManager();

try

{

    PackageInfo pi = pm.getPackageInfo(packageName,

    PackageManager.GET_UNINSTALLED_PACKAGES);

    if(pi != null)

    {

        installFlags |= PackageManager.REPLACE_EXISTING_PACKAGE;

    }

}

catch (NameNotFoundException e)

{}

PackageInstallObserver observer = new PackageInstallObserver();

pm.installPackage(mPackageURI, observer, installFlags);

 

安装应用权限Q?/span>android.permission.INSTALL_PACKAGES

 

pȝ应用Q安装在/system/app下面Q可以采用该方式Q第三方应用无法甌安装卸蝲权限?/span>

java.lang.SecurityException: Neither user 10039 nor current process has android.permission.INSTALL_PACKAGES.

 

3?span style="font:7.0pt "Times New Roman"">  执行install命o?/span>

 

install –r 更新安装Q默认新安装Q如果不附上-r参数Q则会清楚原应用的数据,版本一致则无法安装?/span>

Q?/span>1Q?/span>am start …

Q?/span>2Q?/span>Runtime.exec(String[] args)

Q?/span>3Q?/span>Class<?> execClass = Class.forName("android.os.Exec");

 

4?span style="font:7.0pt "Times New Roman"">  执行cp / adb push命o?/span>

 

ql检到应用E序有更斎ͼ自动完成重新安装?/span>

 

5?span style="font:7.0pt "Times New Roman"">  通过W三方Y件实现?/span>

 

MarketQ?/span>EOEQ?/span>eTrackDog均采用第一U方法实现更新?/span>

优点Q由pȝ核心应用E序控制安装E序Q?/span>

~点Q无法控制安装过E;安装完成后,也无法立d动应用,需要用L认;无法扩展?/span>

 

实例Q?/span>Market查找安装E序

Intent intent =

new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));

startActivity(intent);

 

卸蝲E序的方法:

 

1?span style="font:7.0pt "Times New Roman"">  通过Intent机制Q调出系l卸载应用?/span>

Uri packageURI = Uri.parse("package: your.app.id");

Intent intent = new Intent(Intent.ACTION_DELETE);

startActivity(intent);

 

2?span style="font:7.0pt "Times New Roman"">  直接调用卸蝲接口?/span>

 

PackageInstallObserver observer = new PackageInstallObserver();

pm.installPackage(mPackageURI, observer, installFlags);

 

卸蝲应用权限Q?/span>android.permission.DELETE_PACKAGES

 

3?span style="font:7.0pt "Times New Roman"">  q行rm apk安装文gQ由pȝ后调用卸蝲应用?/span>

 

备注说明Q?/span>

Androidpȝ的应用安装,在系l设|里面有一,是否安装未知源,所在在软g更新的时候,需要检这个选项Q如果打钩,则只允许安装Market源提供的安装E序Q如果没有打钩的话,pȝ安装应用时会提示用户讄Q如果选择讄Q设|好后,无法q回安装界面Q如果选择取消Q则推出安装E序。所以,如果是更新的话,一定要在下载之前就许可安装源的设|,或者在下蝲前检是否已l下载过新的安装E序Q避免重复下载安装程序?/span>

 

相关的代码如下:

1.          int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);      

2.          if (result == 0) {      

3.          // show some dialog here      

4.          // ...      

5.          // and may be show application settings dialog manually      

6.          Intent intent = new Intent();      

7.          intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);      

8.          startActivity(intent);     

9.          }

 

public static final class Settings.Secure extends Settings.NameValueTable

public static final String INSTALL_NON_MARKET_APPS

Since: API Level 3

Whether the package installer should allow installation of apps downloaded from sources other than the Android Market (vending machine). 1 = allow installing from other sources 0 = only allow installing from the Android Market?/span>

 

下面是程序更新的几个步骤演示Q?/span>





OVER!



Xu Jianxiang 2010-08-10 14:00 发表评论
]]>
Android手机上监听短信的两种方式http://www.aygfsteel.com/anymobile/articles/328396.htmlXu JianxiangXu JianxiangTue, 10 Aug 2010 03:50:00 GMThttp://www.aygfsteel.com/anymobile/articles/328396.htmlhttp://www.aygfsteel.com/anymobile/comments/328396.htmlhttp://www.aygfsteel.com/anymobile/articles/328396.html#Feedback8http://www.aygfsteel.com/anymobile/comments/commentRss/328396.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/328396.html阅读全文

Xu Jianxiang 2010-08-10 11:50 发表评论
]]>
Android(1.5) 开机图?文字/动画 修改http://www.aygfsteel.com/anymobile/articles/314687.htmlXu JianxiangXu JianxiangSat, 06 Mar 2010 05:06:00 GMThttp://www.aygfsteel.com/anymobile/articles/314687.htmlhttp://www.aygfsteel.com/anymobile/comments/314687.htmlhttp://www.aygfsteel.com/anymobile/articles/314687.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/314687.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/314687.html 日期Q?010/03/06
|址Qhttp://www.anymobile.org

Android 开Z出现3个画面:
a. Linux pȝ启动Q出现Linux企鹅画?reboot)Q?br /> b. Androidq_启动初始化,出现"A N D R I O D"文字字样画面Q?br /> c. Androidq_囑Şpȝ启动Q出现含闪动的ANDROID字样的动d?start)?br />
1/ 开机图?Linux企?

Linux Kernel引导启动后,加蝲该图片?br /> /kernel/trunk/drivers/video/fbmem.c
/kernel/trunk/drivers/video/fbmem.h
/kernel/trunk/drivers/video/logo/logo.c
/kernel/trunk/drivers/video/logo/logo.h
/kernel/trunk/drivers/video/logo/Kconfig
/kernel/trunk/include/linux/linux_logo.h

2/ 开机文?"A N D R I O D")

Android pȝ启动后,d /initlogo.rleQ一?65 rle压羃的位图)Q如果读取成功,在/dev/graphics/fb0昄Logo囄Q如果读取失败,则将/dev/tty0设ؓTEXT模式Qƈ打开/dev/tty0Q输出文?#8220;A N D R I O D”字样?br />
相关代码Q?br />
/system/core/init/init.c
/system/core/init/init.h
/system/core/init/init.rc
/system/core/init/logo.c

*.rle文g的制作步?
a. 使用GIMP或者Advanced Batch Converter软gQ将图象转换为RAW格式Q?br /> b. 使用android自带的rgb2565工具Q将RAW格式文g转换为RLE格式(如:rgb2565 -rle < initlogo.raw > initlogo.rle)?br />
3/ 开机动?闪动的ANDROID字样的动d?

Android的系l登录动ȝgWindowspȝ的滚动条Q是由前景和背景两张PNG囄l成Q这两张囄存在?system/framework/framework-res.apk文g当中。前景图片(android-logo-mask.pngQ上的Android文字部分镂空Q背景图片(android-logo-shine.pngQ则是简单的U理。系l登录时Q前景图片在最上层昄Q程序代码控制背景图片连l滚动,透过前景囄文字镂空部分滚动昄背景U理Q从而实现动L果?br />
相关代码Q?br /> /frameworks/base/libs/surfaceflinger/BootAnimation.h
/frameworks/base/libs/surfaceflinger/BootAnimation.cpp

/frameworks/base/core/res/assets/images/android-logo-mask.png
Android默认的前景图片,文字部分镂空Q大?56×64
/frameworks/base/core/res/assets/images/android-logo-shine.png
Android默认的背景图片,有动感效果,大小512×64

参考文档:

图说Android开机画面和开机动?br /> http://www.shudoo.com/09/1030/15/13418431.html

initlogo.rle: display an image on boot
http://forum.xda-developers.com/showthread.php?t=443431

分析Android Ҏ件系l启动过E(init守护q程分析Q?br /> http://crazier9527.javaeye.com/blog/454635



Xu Jianxiang 2010-03-06 13:06 发表评论
]]>
Android 调试.so库文?/title><link>http://www.aygfsteel.com/anymobile/articles/314685.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Sat, 06 Mar 2010 04:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/314685.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/314685.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/314685.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/314685.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/314685.html</trackback:ping><description><![CDATA[作者:徐徏?netpirate@gmail.com)<br /> 日期Q?010/03/06<br /> |址Qhttp://www.anymobile.org<br /> <br /> <p>调试步骤如下Q?br /> 1/ 异常的地址信息存到文本文gQƈ存放在项目根目录Q?br /> 2/ 使用panic.py解析该文Ӟ<br /> 3/ Ҏq回的信?文g?行号;Ҏ?调试E序?br /> <br /> 以操作第三方的Touch input 输入法ؓ例,q程如下Q?br /> <br /> # 该输入法的英文和手写OKQ操作中文输入法Ӟ出现异常QY键盘消失Q异常日志如?br /> 02-05 06:41:19.834 D/dalvikvm(  751): Trying to load lib /system/lib/libimezi.so 0x43e2a788<br /> 02-05 06:41:19.874 D/dalvikvm(  751): Added shared lib /system/lib/libimezi.so 0x43e2a788<br /> 02-05 06:41:20.035 I/DEBUG   (  551): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***<br /> 02-05 06:41:20.035 I/DEBUG   (  551): Build fingerprint: 'unknown'<br /> 02-05 06:41:20.035 I/DEBUG   (  551): pid: 751, tid: 751  >>> com.htc.android.cime <<<<br /> 02-05 06:41:20.045 I/DEBUG   (  551): signal 11 (SIGSEGV), fault addr 00000003<br /> 02-05 06:41:20.045 I/DEBUG   (  551):  r0 00000000  r1 00000000  r2 807248ec  r3 807248ec<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  r4 00252d80  r5 00000004  r6 00000001  r7 00000000<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  r8 beff8550  r9 41459d28  10 41459d18  fp 00000000<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  ip 8072430c  sp beff84f0  lr 80716b4f  pc 80717bce cpsr 60000030<br /> 02-05 06:41:20.135 I/DEBUG   (  551):          #00  pc 00017bce  /system/lib/libimezi.so<br /> 02-05 06:41:20.135 I/DEBUG   (  551):          #01  pc 00010f80  /system/lib/libimezi.so<br /> 02-05 06:41:20.145 I/DEBUG   (  551): stack:<br /> 02-05 06:41:20.155 I/DEBUG   (  551):     beff84b0  ad083e10  <br /> 02-05 06:41:20.155 I/DEBUG   (  551):     beff84b4  ad05d44f  /system/lib/libdvm.so<br /> 02-05 06:41:20.155 I/DEBUG   (  551):     beff84b8  ad06b8a0  /system/lib/libdvm.so<br /> 02-05 06:41:20.155 I/DEBUG   (  551):     beff84bc  ad083e10  <br /> 02-05 06:41:20.167 I/DEBUG   (  551):     beff84c0  43e2aa90  <br /> 02-05 06:41:20.175 I/DEBUG   (  551):     beff84c4  00000003  <br /> 02-05 06:41:20.175 I/DEBUG   (  551):     beff84c8  00000014  <br /> 02-05 06:41:20.185 I/DEBUG   (  551):     beff84cc  80716b4f  /system/lib/libimezi.so<br /> <br /> # 保存异常日志Q存为文? 20100205_ime.txt<br /> 02-05 06:41:20.045 I/DEBUG   (  551):  r0 00000000  r1 00000000  r2 807248ec  r3 807248ec<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  r4 00252d80  r5 00000004  r6 00000001  r7 00000000<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  r8 beff8550  r9 41459d28  10 41459d18  fp 00000000<br /> 02-05 06:41:20.055 I/DEBUG   (  551):  ip 8072430c  sp beff84f0  lr 80716b4f  pc 80717bce  cpsr 60000030<br /> 02-05 06:41:20.135 I/DEBUG   (  551):          #00  pc 00017bce  /system/lib/libimezi.so<br /> 02-05 06:41:20.135 I/DEBUG   (  551):          #01  pc 00010f80  /system/lib/libimezi.so<br /> <br /> # 执行脚本<br /> xujianxiang@wingdroid-clone:~/workspace/xujx/wing15$ ./panic.py 20100205_ime.txt <br /> read file ok<br /> /home/xujianxiang/workspace/xujx/wing15/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line: '/home/xujianxiang/workspace/xujx/wing15/out/target/product/generic/symbols/system/lib/libimezi.so': No such file<br /> Traceback (most recent call last):<br />   File "./panic.py", line 69, in <module><br />     print "%-30s%s" % (list[1],list[0])<br /> IndexError: list index out of range<br /> <br /> # 没找到库文gQ因个文件是W三方的Q只存放?out/target/product/generic/system/lib /libimezi.soQ拷贝一份存?out/target/product/generic/symbols/system/lib /libimezi.soQ再ơ执行脚?br /> xujianxiang@wingdroid-clone:~/workspace/xujx/wing15$ ./panic.py 20100205_ime.txt <br /> read file ok<br /> zi81keyd.c:0                  Zi8GetTableData<br /> zi81keyd.c:0                  Zi8InitializeDynamic<br /> <br /> # 成功解析异常Q没有zi8库文件所_更新如下库文Ӟ输入法支持中文拼韟?br /> /system/lib/zi/Zi8DatPYP_CN.z8d<br /> /system/lib/zi/Zi8DatPYS_CN.z8d<br /> /system/lib/zi/Zi8DatZHA_CN.z8d<br /> /system/lib/zi/Zi8DatZHA_HK.z8d<br /> /system/lib/zi/Zi8DatZHA_TW.z8d<br /> /system/lib/zi/Zi8DatZYP_TW.z8d<br /> /system/lib/zi/Zi8DatZYS_TW.z8d</p> <p><br /> </p> ?panic.pyQ?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080"> 1</span><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #008000">#</span><span style="color: #008000">!/usr/bin/python</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 2</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />#</span><span style="color: #008000"> stack symbol parser</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 3</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000"><br /> </span><span style="color: #008080"> 4</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> os<br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> string<br /> </span><span style="color: #008080"> 6</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> sys<br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080"> 8</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">define android product name</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 9</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />#</span><span style="color: #008000">ANDROID_PRODUCT_NAME = 'generic'</span><span style="color: #008000"><br /> </span><span style="color: #008080">10</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">ANDROID_PRODUCT_NAME </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">smdk6410</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />ANDROID_WORKSPACE </span><span style="color: #000000">=</span><span style="color: #000000"> os.getcwd()</span><span style="color: #000000">+</span><span style="color: #800000">"</span><span style="color: #800000">/</span><span style="color: #800000">"</span><span style="color: #000000"><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #008000">#</span><span style="color: #008000"> addr2line tool path and symbol path</span><span style="color: #008000"><br /> </span><span style="color: #008080">15</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">addr2line_tool </span><span style="color: #000000">=</span><span style="color: #000000"> ANDROID_WORKSPACE </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />symbol_dir </span><span style="color: #000000">=</span><span style="color: #000000"> ANDROID_WORKSPACE </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">out/target/product/</span><span style="color: #800000">'</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> ANDROID_PRODUCT_NAME </span><span style="color: #000000">+</span><span style="color: #800000">'</span><span style="color: #800000">/symbols</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">17</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />symbol_bin </span><span style="color: #000000">=</span><span style="color: #000000"> symbol_dir </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">/system/bin/</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />symbol_lib </span><span style="color: #000000">=</span><span style="color: #000000"> symbol_dir </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">/system/lib/</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">20</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000"> ReadLog:<br /> </span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">def</span><span style="color: #000000"> </span><span style="color: #800080">__init__</span><span style="color: #000000">(self,filename):<br /> </span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        self.logname </span><span style="color: #000000">=</span><span style="color: #000000"> filename<br /> </span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">def</span><span style="color: #000000"> parse(self):<br /> </span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        f </span><span style="color: #000000">=</span><span style="color: #000000"> file(self.logname,</span><span style="color: #800000">'</span><span style="color: #800000">r</span><span style="color: #800000">'</span><span style="color: #000000">)<br /> </span><span style="color: #008080">25</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        lines </span><span style="color: #000000">=</span><span style="color: #000000"> f.readlines()<br /> </span><span style="color: #008080">26</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> lines </span><span style="color: #000000">!=</span><span style="color: #000000"> []:<br /> </span><span style="color: #008080">27</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">print</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">read file ok</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">28</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">else</span><span style="color: #000000">:<br /> </span><span style="color: #008080">29</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">print</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">read file failed</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">30</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        result </span><span style="color: #000000">=</span><span style="color: #000000">[]<br /> </span><span style="color: #008080">31</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> line </span><span style="color: #0000ff">in</span><span style="color: #000000"> lines:<br /> </span><span style="color: #008080">32</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> line.find(</span><span style="color: #800000">'</span><span style="color: #800000">stack</span><span style="color: #800000">'</span><span style="color: #000000">) </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">:<br /> </span><span style="color: #008080">33</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff">print</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">stop search</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">34</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff">break</span><span style="color: #000000"><br /> </span><span style="color: #008080">35</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">elif</span><span style="color: #000000"> line.find(</span><span style="color: #800000">'</span><span style="color: #800000">system</span><span style="color: #800000">'</span><span style="color: #000000">) </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">:<br /> </span><span style="color: #008080">36</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #008000">#</span><span style="color: #008000">print 'find one item' + line</span><span style="color: #008000"><br /> </span><span style="color: #008080">37</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">                result.append(line)<br /> </span><span style="color: #008080">38</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> result<br /> </span><span style="color: #008080">39</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">40</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000"> ParseContent:<br /> </span><span style="color: #008080">41</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">def</span><span style="color: #000000"> </span><span style="color: #800080">__init__</span><span style="color: #000000">(self,addr,lib):<br /> </span><span style="color: #008080">42</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            self.address </span><span style="color: #000000">=</span><span style="color: #000000"> addr </span><span style="color: #008000">#</span><span style="color: #008000"> pc address</span><span style="color: #008000"><br /> </span><span style="color: #008080">43</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">            self.exename </span><span style="color: #000000">=</span><span style="color: #000000"> lib  </span><span style="color: #008000">#</span><span style="color: #008000"> executable or shared library</span><span style="color: #008000"><br /> </span><span style="color: #008080">44</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">    </span><span style="color: #0000ff">def</span><span style="color: #000000"> addr2line(self):<br /> </span><span style="color: #008080">45</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        cmd </span><span style="color: #000000">=</span><span style="color: #000000"> addr2line_tool </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">"</span><span style="color: #800000"> -C -f -s -e </span><span style="color: #800000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> symbol_dir </span><span style="color: #000000">+</span><span style="color: #000000"> self.exename </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800000">"</span><span style="color: #800000"> </span><span style="color: #800000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> self.address<br /> </span><span style="color: #008080">46</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #008000">#</span><span style="color: #008000">print cmd</span><span style="color: #008000"><br /> </span><span style="color: #008080">47</span><span style="color: #008000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #000000">        stream </span><span style="color: #000000">=</span><span style="color: #000000"> os.popen(cmd)<br /> </span><span style="color: #008080">48</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        lines </span><span style="color: #000000">=</span><span style="color: #000000"> stream.readlines();<br /> </span><span style="color: #008080">49</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        list </span><span style="color: #000000">=</span><span style="color: #000000"> map(string.strip,lines)<br /> </span><span style="color: #008080">50</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> list<br /> </span><span style="color: #008080">51</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    <br /> </span><span style="color: #008080">52</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />inputarg </span><span style="color: #000000">=</span><span style="color: #000000"> sys.argv<br /> </span><span style="color: #008080">53</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000"> len(inputarg) </span><span style="color: #000000"><</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">:<br /> </span><span style="color: #008080">54</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">print</span><span style="color: #000000"> </span><span style="color: #800000">'</span><span style="color: #800000">Please input panic log</span><span style="color: #800000">'</span><span style="color: #000000"><br /> </span><span style="color: #008080">55</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    exit()<br /> </span><span style="color: #008080">56</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">57</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />filename </span><span style="color: #000000">=</span><span style="color: #000000"> inputarg[</span><span style="color: #000000">1</span><span style="color: #000000">]<br /> </span><span style="color: #008080">58</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />readlog </span><span style="color: #000000">=</span><span style="color: #000000"> ReadLog(filename)<br /> </span><span style="color: #008080">59</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />inputlist </span><span style="color: #000000">=</span><span style="color: #000000"> readlog.parse()<br /> </span><span style="color: #008080">60</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><br /> </span><span style="color: #008080">61</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">for</span><span style="color: #000000"> item </span><span style="color: #0000ff">in</span><span style="color: #000000"> inputlist:<br /> </span><span style="color: #008080">62</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    itemsplit </span><span style="color: #000000">=</span><span style="color: #000000"> item.split()<br /> </span><span style="color: #008080">63</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    test </span><span style="color: #000000">=</span><span style="color: #000000"> ParseContent(itemsplit[</span><span style="color: #000000">-</span><span style="color: #000000">2</span><span style="color: #000000">],itemsplit[</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">])<br /> </span><span style="color: #008080">64</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    list </span><span style="color: #000000">=</span><span style="color: #000000"> test.addr2line()<br /> </span><span style="color: #008080">65</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">print</span><span style="color: #000000"> </span><span style="color: #800000">"</span><span style="color: #800000">%-30s%s</span><span style="color: #800000">"</span><span style="color: #000000"> </span><span style="color: #000000">%</span><span style="color: #000000"> (list[</span><span style="color: #000000">1</span><span style="color: #000000">],list[0])<br /> </span><span style="color: #008080">66</span><span style="color: #000000"><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <img src ="http://www.aygfsteel.com/anymobile/aggbug/314685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-03-06 12:56 <a href="http://www.aygfsteel.com/anymobile/articles/314685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android AlarmClock 闚w应用 单分?/title><link>http://www.aygfsteel.com/anymobile/articles/308466.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Wed, 06 Jan 2010 09:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/308466.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/308466.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/308466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/308466.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/308466.html</trackback:ping><description><![CDATA[作者:徐徏?netpirate@gmail.com)<br /> 日期Q?010/01/06<br /> |址Qhttp://www.anymobile.org<br /> <br /> 1/ set a alarm clock<br /> 1.1 update alarms.db<br /> 1.2 update com.android.alarmclock_preferences.xml<br /> 1.3 update Settings.System.NEXT_ALARM_FORMATTED for status bar<br /> 1.4 set Kernel RTC alarm or send a message if no driver<br /> <br /> flow:<br /> com.android.alarmclock.AlarmClock.onCreate() -> SetAlarm.onPreferenceTreeClick() -> SetAlarm.saveAlarm() -> <br /> Alarm.setAlarm() -> Alarm.setNextAlert() -> Alarm.enableAlert(ALARM_ALERT_ACTION)/saveNextAlarm(Settings.System.NEXT_ALARM_FORMATTED) -><br /> android.app.AlarmManager.set() -> AlarmManagerService.set() -> AlarmManagerService.setRepeating -> AlarmManagerService.setLocked() -><br /> android.app.IAlarmManager.set() -> RTC.save()// /dev/alarms<br /> <br /> 2/ play a clarm clock<br /> <br /> flow:<br /> RTC (WAKEUP) -> AlarmReceiver.onReceive(ALARM_ALERT_ACTION) -> AlarmAlert.onCreate() -> <br /> AlarmAlertWakeLock.acquire()/KeyguardManager.newKeyguardLock().disableKeyguard() -> <br /> AlarmKlaxon.postPlay() ->  AlarmKlaxon.KillerCallback().onKilled() -> AlarmAlert.dismiss() -> <br /> AlarmAlertWakeLock.release()/KeyguardManager.newKeyguardLock().reenableKeyguard()<br /> <br /> some description:<br /> <br /> /**<br />  * Days of week coded as single int, convenient for DB storage:<br />  *<br />  * 0x00:  no day<br />  * 0x01:  Monday<br />  * 0x02:  Tuesday<br />  * 0x04:  Wednesday<br />  * 0x08:  Thursday<br />  * 0x10:  Friday<br />  * 0x20:  Saturday<br />  * 0x40:  Sunday<br />  */<br /> <br /> /**<br />  * Alarm type<br />  *<br />  * ELAPSED_REALTIME            Alarm time in time since boot, including sleep, This alarm does not wake the device up.<br />  * ELAPSED_REALTIME_WAKEUP    Alarm time in time since boot, including sleep, This alarm will wake up the device when it goes off.<br />  * RTC            Alarm time in wall clock time in UTC, This alarm does not wake the device up.<br />  * RTC_WAKEUP    Alarm time in wall clock time in UTC, This alarm will wake up the device when it goes off.<br />  */<br /> <br /> db example:<br /> <br /> # cat /data/data/com.android.alarmclock/shared_prefs/com.android.alarmclock_preferences.xml<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080;">1</span> <span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">xml version='1.0' encoding='utf-8' standalone='yes' </span><span style="color: #0000ff;">?></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">2</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">map</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">3</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">string </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="label"</span><span style="color: #0000ff;">></span><span style="color: #000000;">警报</span><span style="color: #0000ff;"></</span><span style="color: #800000;">string</span><span style="color: #0000ff;">></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">4</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">boolean </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="vibrate"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">5</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">boolean </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="on"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">6</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">map</span><span style="color: #0000ff;">></span></div> <br /> # sqlite3 /data/data/com.android.alarmclock/databases/alarms.db<br /> SQLite version 3.5.9<br /> Enter ".help" for instructions<br /> sqlite> .tables<br /> alarms            android_metadata<br /> sqlite> .schema alarms<br /> CREATE TABLE alarms (_id INTEGER PRIMARY KEY,hour INTEGER, minutes INTEGER, daysofweek INTEGER, alarmtime INTEGER, enabled INTEGER, vibrate INTEGER, message TEXT, alert TEXT);<br /> sqlite> select * from alarms;<br /> 1|7|0|127|0|0|1||<br /> 2|8|30|31|1262766600000|1|1|警报|content://media/internal/audio/media/21<br /> 3|9|0|0|0|0|1||<br /> <img src ="http://www.aygfsteel.com/anymobile/aggbug/308466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2010-01-06 17:27 <a href="http://www.aygfsteel.com/anymobile/articles/308466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 软g安装E序(*.apk)的结构分析、反~译以及汉化http://www.aygfsteel.com/anymobile/articles/307094.htmlXu JianxiangXu JianxiangWed, 23 Dec 2009 17:22:00 GMThttp://www.aygfsteel.com/anymobile/articles/307094.htmlhttp://www.aygfsteel.com/anymobile/comments/307094.htmlhttp://www.aygfsteel.com/anymobile/articles/307094.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/307094.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/307094.html 日期Q?009/12/23
|址Qhttp://www.anymobile.org

1/ apk文gl构Q?br />

Apk文gQ?/p>

Android application package文g。每个要安装到OPhoneq_的应用都要被~译打包Z个单独的文gQ后~名ؓ.apkQ其中包含了应用的二q制代码、资源、配|文件等?/p>

apk文g实际是一个zip压羃包,可以通过解压~工兯开。可以用zip解开*.apk文gQ下面是一个helloword的apkCZ文g

|– AndroidManifest.xml  
|– META-INF  
|   |– CERT.RSA  
|   |– CERT.SF  
|   `– MANIFEST.MF  
|– classes.dex  
|– res  
|   |– drawable  
|   |   `– icon.png  
|   `– layout  
|       `– main.xml  
`– resources.arsc


2/ apk文g解压后反~译Q?br />
2.1 囄{多媒体文gQ没有编译,无需反编译?br />
2.2 layout{二q制xml文gQ用AXMLPrinter其转换为可ȝxml文gQjava -jar AXMLPrinter2.jar main.xml > new_main.xml
工具下蝲地址Q?a >http://code.google.com/p/android4me/downloads/list

2.3 class文g反编译:

Android模拟器中提供了一个dex文g的反~译工具Qdexdump。用法ؓ首先启动Android模拟器,把要查看的dex文g用adb push上传的模拟器中,然后通过adb shelldQ找到要查看的dex文gQ执行dexdump xxx.dex?/p>

目前在网上能扑ֈ的另一个dex文g的反~译工具是Dedexer。Dedexer可以ddex格式的文Ӟ生成一U类g汇编语言的输出。这U输Zjasmin[ ]的输出相|但包含的是Dalvik的字节码?/p>
2.4 resources.arsc资源文gQ参考汉化部?br />
3/ android 软g汉化

      Ҏ1Q通过16q制~码软g自行替换英文
      1.JDK(Java Development Kit) -开发环?br />       2.Auto-Sign -{֐工具
      3.Hex Workshop -十六q制~辑?br />       4.WinRAR -压羃软g
      图文q茂CZQ?a >http://bbs.blueshow.net/thread-604533-1-1.html

      Ҏ2Q通过汉化开发h员自行编写的汉化软gFor Android
      1.JDK(Java Development Kit) -开发环?br />       2.Android ResEdit-汉化软g
      3.WinRAR -压羃软g
      图文q茂CZQ?a >http://mobile.yesky.com/363/9292863.shtml

参考文档:

Apk文gl构?http://www.ophonesdn.com/article/show/38
Apk文gl构、dex反编?http://ken.opda.cn/?p=31
android 资源文g反编?http://ken.opda.cn/?p=53


Xu Jianxiang 2009-12-24 01:22 发表评论
]]>
Android 1.5 q_整合 Google Apps (Market;GTalk;Google Maps;GMail;Voice Search)http://www.aygfsteel.com/anymobile/articles/306653.htmlXu JianxiangXu JianxiangSat, 19 Dec 2009 05:36:00 GMThttp://www.aygfsteel.com/anymobile/articles/306653.htmlhttp://www.aygfsteel.com/anymobile/comments/306653.htmlhttp://www.aygfsteel.com/anymobile/articles/306653.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/306653.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/306653.html 日期Q?009/12/19
|址Qhttp://www.anymobile.org

ULGoogle Apps (Market;GTalk;Google Maps;GMail;Voice Search)的大致步骤如下:

1/ 通过ADBQ从Google定制的手Z载相关的文g(jar/lib库,apk安装文gQxml权限文g{?Q?br /> 2/ 修改两个make脚本文gQcore.mk和generic_with_google.mkQ?br /> 3/ make generic_with_googleQ生产新的system.img镜像文g的时候包含这些文件?br />
注意点:

a. UL的手机需要支持上|,通过SetupWizard.apk验证Google帐户Q该E序在待机界面前q行Q验证失败的话,会无法进入待机界面;Market;GTalk;GMail均需要验证Google帐户QMarket需要GTalk服务Q设|?span style="color: #800080; font-family: verdana; font-size: 13px; line-height: 21px; ">ro.setupwizard.mode=DISABLEDQ则开Z会强刉证?br /> b. Android 1.5版本不支持街景;
c. 如果只移植Google MapsQ则只需要移植以?个文Ӟ
Adding vendor/google/app/Maps.apk
Adding vendor/google/etc/permissions/com.google.android.maps.xml
Adding vendor/google/framework/com.google.android.maps.jar

下面是core.mk和generic_with_google.mk的代码修改:

Sending build/target/product/core.mk
1 PRODUCT_BRAND :=
2 PRODUCT_NAME :=
3 PRODUCT_DEVICE :=
4 PRODUCT_POLICY := android.policy_phone
5 PRODUCT_PROPERTY_OVERRIDES := \
6 ro.config.notification_sound=F1_New_SMS.ogg
7
8 PRODUCT_PACKAGES := \
9 framework-res \
10 Browser \
11 Contacts \
12 Launcher \
13 HTMLViewer \
14 Phone \
15 ContactsProvider \
16 DownloadProvider \
17 GoogleSearch \
18 MediaProvider \
19 SettingsProvider \
20 TelephonyProvider \
21 UserDictionaryProvider \
22 PackageInstaller \
23 Bugreport \
24 ImProvider

Sending build/target/product/generic_with_google.mk

1 # This is a generic product that isn't specialized for a specific device.
2 # It includes the base Android platform including some Google-specific features.
3 # If you do not want to include Google specific features, you should derive
4 # from generic.mk
5 PRODUCT_PROPERTY_OVERRIDES := \
ro.com.google.locationfeatures=1 \
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html \
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html \

ro.setupwizard.mode=DISABLED

6 PRODUCT_PACKAGES := \
7 GoogleContactsProvider \
8 GoogleSubscribedFeedsProvider
9 # \
10 # com.google.android.gtalkservice \
11 # com.google.android.maps
12 PRODUCT_COPY_FILES := \
13 vendor/google/app/checkin.apk:system/app/checkin.apk \
14 vendor/google/app/Gmail.apk:system/app/Gmail.apk \
15 vendor/google/app/GmailProvider.apk:system/app/GmailProvider.apk \
16 vendor/google/app/GoogleApps.apk:system/app/GoogleApps.apk \
17 vendor/google/app/GooglePartnerSetup.apk:system/app/GooglePartnerSetup.apk \
18 vendor/google/app/GoogleSettingsProvider.apk:system/app/GoogleSettingsProvider.apk \
19 vendor/google/app/gtalkservice.apk:system/app/gtalkservice.apk \
20 vendor/google/app/Maps.apk:system/app/Maps.apk \
21 vendor/google/app/MediaUploader.apk:system/app/MediaUploader.apk \
22 vendor/google/app/NetworkLocation.apk:system/app/NetworkLocation.apk \
23 vendor/google/app/SetupWizard.apk:system/app/SetupWizard.apk \
24 vendor/google/app/Street.apk:system/app/Street.apk \
25 vendor/google/app/Talk.apk:system/app/Talk.apk \
26 vendor/google/app/Vending.apk:system/app/Vending.apk \
27 vendor/google/app/VoiceSearch.apk:system/app/VoiceSearch.apk \
28 vendor/google/etc/permissions/com.google.android.gtalkservice.xml:system/etc/permissions/com.google.android.gtalkservice.xml \
29 vendor/google/etc/permissions/com.google.android.maps.xml:system/etc/permissions/com.google.android.maps.xml \
30 vendor/google/framework/com.google.android.gtalkservice.jar:system/framework/com.google.android.gtalkservice.jar \
31 vendor/google/framework/com.google.android.maps.jar:system/framework/com.google.android.maps.jar \
32 vendor/google/lib/libspeech.so:system/lib/libspeech.so
33
34 $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
35
36 # Overrides
37 PRODUCT_NAME := generic_with_google
38

注意Q?/p>

我用的HTC的image提取的google maps 3.0的jar库和apk安装文gQ只可以定位成功Q无法读取定位后的地图数据,抛出ClassCastException异常Q?/p>

03-01 16:52:58.561 E/AndroidRuntime( 2453): Uncaught handler: thread main exiting due to uncaught exception
03-01 16:52:58.936 E/AndroidRuntime( 2453): java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable
03-01 16:52:58.936 E/AndroidRuntime( 2453):     at com.google.android.maps.MyLocationOverlay.getLocationDot(MyLocationOverlay.java:180)

最后,我是提取的release版的Android 1.5版本的相x?Google Add-ons)Q方法如下:

1)/system/etc/permissions/com.google.android.gtalkservice.xml
2)/system/etc/permissions/com.google.android.maps.xml
3)/system/framework/com.google.android.gtalkservice.jar
4)/system/framework/om.google.android.maps.jar
5)/system/app/Maps.apk (Google Maps v3.1)


参考:

Google Mobile
http://www.google.com/mobile/

HTC Developer Center
http://developer.htc.com/index.html

Building Android 1.5 – Google Apps and audio files
http://www.johandekoning.nl/index.php/2009/07/12/building-android-1-5-google-apps-and-audio-files/

Google Voice Search Wiki
http://en.wikipedia.org/wiki/Google_Voice_Search

Using Google Maps in Android
http://mobiforge.com/developing/story/using-google-maps-android

Android Add-ons(Map API)
http://android.nanshapo.com/topic/view/812.html





Xu Jianxiang 2009-12-19 13:36 发表评论
]]>
Android q_?Microsoft Office & Adobe PDF 软g相关http://www.aygfsteel.com/anymobile/articles/306647.htmlXu JianxiangXu JianxiangSat, 19 Dec 2009 04:43:00 GMThttp://www.aygfsteel.com/anymobile/articles/306647.htmlhttp://www.aygfsteel.com/anymobile/comments/306647.htmlhttp://www.aygfsteel.com/anymobile/articles/306647.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/306647.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/306647.html 日期Q?009/12/19
|址Qhttp://www.anymobile.org

1/ Decuments To Go
http://www.dataviz.com/products/documentstogo/android/index.html
Supports latest Microsoft Office & Adobe -- formats (doc, docx, xls, xlsx, ppt, pptx & pdf)

免费版:Word view; Excel view
收费版:Word; Excel; PowerPoint; PDF view, create & edit (单独安装key app)

2/ QuickOffice
http://www.quickoffice.com/quickoffice_android/
Supports Microsoft Office & TXT -- formats (doc, xls, ppt, & txt)

免费版:Word view; Excel view
收费版:Word; Excel; PowerPoint; TXT view, rename, sort

比较两款软gQ?br />
软g性质Q都是商业Y件?br /> 功能斚wQ操作的都是SD卡上的文档,免费版本都只有Word和Excel的浏览功能;收费版本Q前者可以编辑Office ?PDF 文gQ后者只可以览Office和TXTQ不支持~辑功能?br /> 软g程QDecuments To Go=Microsoft Office+Adobe ReaderQ而QuickOffice=FileManager+Office view?br />
另外Q测试中发现QDecuments To Go创徏的word文gQQuickOffice无法打开Q而电脑上的OpenOffice则可以打开?br />


Xu Jianxiang 2009-12-19 12:43 发表评论
]]>
Android 与J2ME 虚拟机相兌?/title><link>http://www.aygfsteel.com/anymobile/articles/306643.html</link><dc:creator>Xu Jianxiang</dc:creator><author>Xu Jianxiang</author><pubDate>Sat, 19 Dec 2009 03:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/anymobile/articles/306643.html</guid><wfw:comment>http://www.aygfsteel.com/anymobile/comments/306643.html</wfw:comment><comments>http://www.aygfsteel.com/anymobile/articles/306643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/anymobile/comments/commentRss/306643.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/anymobile/services/trackbacks/306643.html</trackback:ping><description><![CDATA[<p>作者:徐徏?netpirate@gmail.com)<br /> 日期Q?009/11/16<br /> |址Qhttp://www.anymobile.org</p> <p>某些手机厂商的J2ME虚拟机是UL的SUN公司开源授权的PHONEME虚拟?https://phoneme.dev.java.net/)Q南京某公司(CM)也开发了J2ME虚拟机,具体情况不详?/p> <p><img src="https://mobileandembedded.dev.java.net/branding/images/phoneme/welcomePhoneME7-80pct.png" alt="PhoneME" width="440" height="140" /> </p> <p>phoneME Feature software is an open source development effort addressing the market and technical requirements of “feature phone” devices. The majority (about 80%) of mobile phones in the world today are feature phones. Devices of this type typically include a high-resolution screen, multiple forms of messaging (SMS, MMS, IM, Email), basic 2D and 3D gaming, a camera, music player, Internet browser, etc. <br />  <br /> Powering all this functionality is a core set of Java ME technologies known as CLDC (the Java VM) and MIDP (the mobile information device profile). CLDC and MIDP are the most widely adopted Java ME application platforms used in mobile phones today. Layered on this base is a set of additional Java ME technologies often called “optional packages” that come in the form of JSRs (Java Specification Requests). <br />  <br /> The phoneME Feature software includes the latest milestone and in-development implementations of CLDC and MIDP as well as implementations for a number of optional package JSRs. <a >  more...</a> </p> <p>下面是三相关的文档资料Q?/p> <h1 class="title_txt"> <span style="color: #333399;"><span style="font-size: large;">j2meE序UL入androidȝ</span> </span> </h1> <p>http://blog.csdn.net/lzf_china/archive/2009/10/16/4676111.aspx</p> <p>思\无非3U: </p> <p>1, 提供一个android下的j2me虚拟机,让j2meE序q行 如OPhone下的癑֮?br /> 2, 提供一个{换工Pj2me的jar攑օapk中,重新用apt制作成apk安装E序Qƈ允许Q如netmite<br /> 3, 提供cd中间层,android中没有的j2mecd用android的程序实现出来,q用android sdk重新~译成apk 如J2AB</p> <p><span style="font-size: 14pt; color: #02368d;"><strong>JavaME无法满Android,只有设计Dalvik</strong> </span> </p> <p>http://blog.chinaunix.net/u2/85805/showart_1421638.html</p> <p><strong>AndroidZ么不使用Native C/C++Q?br /> AndroidZ么不使用Sun JavaMEQ?/strong> </p> <p><span style="font-size: 14pt; color: #02368d;"><strong>Dalvik和J2ME相比先进C哪里Q?/strong> </span> </p> <p>http://blog.chinaunix.net/u2/85805/showart_1421644.html</p> <p>分析了Dalvik和J2ME的区别。首先Dalvik虚拟机是Google自己开发的 Java虚拟机,q行在Androidq_上。J2ME是Sun公司的移动^台Java VM?/p> <p>一、运行环境对?br /> 二、模拟器<br /> 三、兼Ҏ?br /> 四、运行效?br /> <span style="font-size: small;">五、安全?br /> 六、类库完整?/span> </p> <img src ="http://www.aygfsteel.com/anymobile/aggbug/306643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/anymobile/" target="_blank">Xu Jianxiang</a> 2009-12-19 11:49 <a href="http://www.aygfsteel.com/anymobile/articles/306643.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android 的系l属?SystemProperties)讄分析http://www.aygfsteel.com/anymobile/articles/301989.htmlXu JianxiangXu JianxiangWed, 11 Nov 2009 09:40:00 GMThttp://www.aygfsteel.com/anymobile/articles/301989.htmlhttp://www.aygfsteel.com/anymobile/comments/301989.htmlhttp://www.aygfsteel.com/anymobile/articles/301989.html#Feedback0http://www.aygfsteel.com/anymobile/comments/commentRss/301989.htmlhttp://www.aygfsteel.com/anymobile/services/trackbacks/301989.html 日期Q?009/11/11
|址Qhttp://www.anymobile.org

Android 的系l属性包括两部分Q文件保存的持久属性和每次开机导入的cache属性。前者主要保存在下面几个文g中:

bionic/libc/include/sys/_system_properties.h
1     #define PROP_SERVICE_NAME "property_service"
2     #define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
3     #define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
4     #define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
5     #define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"

后者则通过frameworks/base/core/java/android/os/SystemProperties.java的接口定义,

 1     private static native String native_get(String key);
 2     private static native String native_get(String key, String def);
 3     private static native void native_set(String key, String def);
 4     public static void set(String key, String val) {
 5         if (key.length() > PROP_NAME_MAX) {
 6             throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
 7         }
 8         if (val != null && val.length() > PROP_VALUE_MAX) {
 9             throw new IllegalArgumentException("val.length > " +
10                 PROP_VALUE_MAX);
11         }
12         native_set(key, val);
13     }

该接口类在初始化q行环境中注册对应的cpp接口android_os_SystemProperties.cppQ实际操作通过JNI调用的是cpp文g对应的接口:

frameworks/base/core/jni/AndroidRuntime.cpp
1     namespace android {
2     extern int register_android_os_SystemProperties(JNIEnv *env);
3     }

frameworks/base/core/jni/android_os_SystemProperties.cpp
 1     static void SystemProperties_set(JNIEnv *env, jobject clazz, jstring keyJ, jstring valJ)
 2     {
 3         int err;
 4         const char* key;
 5         const char* val;
 6         key = env->GetStringUTFChars(keyJ, NULL);
 7         if (valJ == NULL) {
 8             val = "";       /* NULL pointer not allowed here */
 9         } else {
10             val = env->GetStringUTFChars(valJ, NULL);
11         }
12         err = property_set(key, val);
13         env->ReleaseStringUTFChars(keyJ, key);        
14         if (valJ != NULL) {
15             env->ReleaseStringUTFChars(valJ, val);
16         }
17     }

讄key的valueӞ需要作鉴权Q根据设|程序所在进E的fdLuid|比如system serverq程可以讄net打头的keyQ不可以讄gsm打头的keyQ相关的定义如下Q?br />
system/core/include/private/android_filesystem_config.h
1     #define AID_ROOT             0  /* traditional unix root user */
2     #define AID_SYSTEM        1000  /* system server */
3     #define AID_RADIO         1001  /* telephony subsystem, RIL */
4     #define AID_DHCP          1014  /* dhcp client */
5     #define AID_SHELL         2000  /* adb and debug shell user */
6     #define AID_CACHE         2001  /* cache access */
7     #define AID_APP          10000 /* first app user */

system/core/init/property_service.c
 1     #define PERSISTENT_PROPERTY_DIR  "/data/property"
 2     struct {
 3         const char *prefix;
 4         unsigned int uid;
 5     } property_perms[] = {
 6         { "net.rmnet0.",    AID_RADIO },
 7         { "net.gprs.",      AID_RADIO },
 8         { "ril.",           AID_RADIO },
 9         { "gsm.",           AID_RADIO },
10         { "net.dns",        AID_RADIO },
11         { "net.usb0",       AID_RADIO },
12         { "net.",           AID_SYSTEM },
13         { "dev.",           AID_SYSTEM },
14         { "runtime.",       AID_SYSTEM },
15         { "hw.",            AID_SYSTEM },
16         { "sys.",        AID_SYSTEM },
17         { "service.",    AID_SYSTEM },
18         { "wlan.",        AID_SYSTEM },
19         { "dhcp.",        AID_SYSTEM },
20         { "dhcp.",        AID_DHCP },
21         { "debug.",        AID_SHELL },
22         { "log.",        AID_SHELL },
23         { "service.adb.root",    AID_SHELL },
24         { "persist.sys.",    AID_SYSTEM },
25         { "persist.service.",   AID_SYSTEM },
26         { NULL, 0 }
27     };
28     int property_set(const char *name, const char *value)
29     {
30         property_changed(name, value);
31         return 0;
32     }
33     int start_property_service(void)
34     {
35         int fd;
36 
37         load_properties_from_file(PROP_PATH_SYSTEM_BUILD);
38         load_properties_from_file(PROP_PATH_SYSTEM_DEFAULT);
39         load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE);
40         /* Read persistent properties after all default values have been loaded. */
41         load_persistent_properties();
42 
43         fd = create_socket(PROP_SERVICE_NAME, SOCK_STREAM, 066600);
44         if(fd < 0return -1;
45         fcntl(fd, F_SETFD, FD_CLOEXEC);
46         fcntl(fd, F_SETFL, O_NONBLOCK);
47 
48         listen(fd, 8);
49         return fd;
50     }
51     void handle_property_set_fd(int fd)
52     {
53         switch(msg.cmd) {
54         case PROP_MSG_SETPROP:
55             msg.name[PROP_NAME_MAX-1= 0;
56             msg.value[PROP_VALUE_MAX-1= 0;
57 
58             if(memcmp(msg.name,"ctl.",4== 0) {
59                 if (check_control_perms(msg.value, cr.uid)) {
60                     handle_control_message((char*) msg.name + 4, (char*) msg.value);
61                 } else {
62                     ERROR("sys_prop: Unable to %s service ctl [%s] uid: %d pid:%d\n",
63                             msg.name + 4, msg.value, cr.uid, cr.pid);
64                 }
65             } else {
66                 if (check_perms(msg.name, cr.uid)) {
67                     property_set((char*) msg.name, (char*) msg.value);
68                 } else {
69                     ERROR("sys_prop: permission denied uid:%d  name:%s\n",
70                           cr.uid, msg.name);
71                 }
72             }
73             break;
74 
75         default:
76             break;
77         }
78     }

在开机启动后的init操作中,会执行一个loop循环Q当到有新的设|时Q进入设|流E,鉴权p|会提C相关的异常Q如sys_prop: permission denied uid:1000  name:gsm.phone.id

system/core/init/init.c
 1     void property_changed(const char *name, const char *value)
 2     {
 3         if (property_triggers_enabled) {
 4             queue_property_triggers(name, value);
 5             drain_action_queue();
 6         }
 7     }
 8     int main(int argc, char **argv)
 9     {
10         parse_config_file("/init.rc");
11         qemu_init();
12         device_fd = device_init();
13         property_init();
14         fd = open(console_name, O_RDWR);
15         property_set_fd = start_property_service();
16         ufds[0].fd = device_fd;
17         ufds[0].events = POLLIN;
18         ufds[1].fd = property_set_fd;
19         ufds[1].events = POLLIN;
20         ufds[2].fd = signal_recv_fd;
21         ufds[2].events = POLLIN;
22         fd_count = 3;
23         for(;;) {
24             if (ufds[0].revents == POLLIN)
25                 handle_device_fd(device_fd);
26 
27             if (ufds[1].revents == POLLIN)
28                 handle_property_set_fd(property_set_fd);
29             if (ufds[3].revents == POLLIN)
30                 handle_keychord(keychord_fd);
31         }
32         return 0;
33     }

OVERQ?

Xu Jianxiang 2009-11-11 17:40 发表评论
]]>
վ֩ģ壺 | | | | ̨| ɳƺ| ˫| | ŷ| | | ̫| ղ| | | | | | | մ| | | пѷ| | | ̽| ˶| | | ƺ| | | | | ÷| ˫| ͤ| | | ӥ̶| |