Categories
Android

反编译Android market Vending.apk包

主要是工作的缘故,Market时不时登录不了,东试这个rom,西试那个rom也不是解决办法,横下心来,决定fuck 她一下。 从今年5月份开始到现在,断断续续的干这事,用反编译工具apktool,ddx左右开工,下班回宿舍常常搞到两三点,弄得身心疲惫,已经完成了90%,2.5w行的代码,最后的10%将是最难的,集中分布在 try catch throw, 多层的if for 结合,不好处理。都是用最原始的方法: edit-compile-decompile-diff-edit,一直循环。手工反编译出来的代码已经可以阅读,需要再搞清楚它的protobuf协议,api,慢慢消化。有时间,用Rails写个网页,提供web浏览。反编译的Vending.apk是1.5版本的,跟最新的2.2差别太大了,也许最初的决定,是一种错误。这过程,除了锻炼我的牛力,学习熟悉Java之外,剩下的是无尽的空虚,浮云,都是浮云! 这事就这样暂停吧,接下来花时间去阅读Android的代码,过段时间有力气了再回头继续fuck。 转眼到了10月中旬,快过年了,三年的工作合同将满,下一步不知道去哪好,也向往搞一个像 37signals那样的公司,两三个人,崇尚简单即是美,上帝赐予我力量吧。

Categories
Android

Android设置显示本机号码

本机号码,我觉得是没有多大的用处,几乎谁都会知道自己的手机号码,但也有用户真的需要这个功能。有个对讲机软件tikl – touch to talk,可以通过网络进行多方通话,需要用到本机号码。 测试短信的脚本,自己给自己发短信,也需要本机号码。 Android手机在 设置-关于手机-状态消息,可以查看到本机号码,很多情况是显示未知。 很多模组用AT+CNUM 这组AT命令可以设置与查询本机号码。一般的手机在查看本机号码的界面都可以添加本机号码的,比如MTK/展信手机都提供这个功能。 Android对卡的操作,都是直接读写卡上的信息,用比较底层的AT+CRSM,而不是常用的AT,比如 AT+CMBR, AT+CMBW,AT+CNUM等。 Android手机设置本机号码,目前我还没发现有工具可以设置,很多人是把SIM卡拿到可以设置的手机上设置,然后把卡重新插上。 不过,Froyo提供了内部接口方法Phone.setLine1Number(),CM6的通话设置里就加入了本机号码设置功能: 具体的代码,在这里看清清楚楚: http://github.com/CyanogenMod/android_packages_apps_Phone/commit/5351ce8247eb9fc9a3bf2ec751d14dcd373ab92e 可能需要到github注册个帐号,才可以浏览代码,主要是在phone里面添加处理,独立写个小程序的话,比较麻烦,因为要访问PhoneApp。 更新: (2010-11-15) 今天试了一下,参考Settings, 共享一个sharedUserId,也可以写个独立的程序,在g1 2.2,HTC desire上测试通过。注意:Android 2.2以下的无法使用。 代码献上: https://github.com/lytsing/MyPhoneNumber

Android Market FAQ

Android Market 是什么? Android Market,电子市场,相似于Apple的AppStore,提供很多软件下载,绝大部分是免费的。 安装 Android Market 要装哪些包? Vending.apk 就是大名鼎鼎的Market包,还要依赖其他的包,请参考《 Android 2.2 Market 依赖包》。 Vending.apk包是不开源的,属于Google公司私有产品,正规手机厂家要与其签约才可以安装使用。 模拟器上如何运行Android Market? Android2.1, 2.2 模擬器中加入Market http://kny.cc/?p=478 PC上试玩Android Market: http://www.iteeyan.com/2010/07/play-android-app-on-emulator/ 是否有Android Market 提供Api吗 ? Android market api http://lytsing.org/wiki/android/android-market-api.html Android Market 的开源 API 项目,非官方提供的,基于Google Protocol Buffers 协议实现。它使用java.net.URL来与google应用商店服务器通信,能够运行在GoogleAppEngine和Android应用程序中。你可以利用它来浏览任何国家或本地的Android应用商店。通过关键字或包名来搜索Android应用。并通过返回的应用ID来获取这个应用的详细信息,包括评论、图标与软件截图。 目前已经有很多网站通过反编译market文件,用tcpdump, wireshark等工具,分析数据包,提供了android market的web浏览界面。比如 : http://www.androlib.com/ http://androidstats.com/ http://www.kandroid.org/ http://www.appbrain.com http://androidtapp.com/ http://www.androidzoom.com/ market上无法下载软件,总停留在 downloading…  取消重新下载 或者重启 […]

Categories
Android

Android 2.2系统在线升级的移植

之前我们自己做过一个在线T卡升级的应用程序,设计思路是非常简单的,获取本地手机版本号,获取并解析服务器上json格式的最新信息,如果服务器上的版本号大于本地手机的版本号,则可以下载并md5验证升级包,然后调用系统函数升级即可。 从Android 2.2开始,Google服务框架 GoogleServicesFramework.apk 包自带的系统更新处理了android.settings.SYSTEM_UPDATE_SETTINGS这个intent。我们自己做的手机,当然不可能用Google自带的在线升级。为了不修改 GoogleServicesFramework.apk,在Settings的AndroidManifest.xml文件,把 SYSTEM_UPDATE_SETTINGS,修改为别的名字,比如 SYSTEM_UPGRADE_SETTINGS。 还需要同步修改这个文件: Settings/res/xml/device_info_settings.xml 今天发神经病,花了一大早上的时候反编译GoogleServicesFramework里的update,看看别人如何设计的,就几个文件: [deli@athena update]$ tree . . ├── Download.java ├── StateWatcher.java ├── SystemUpdateActivity.java ├── SystemUpdateInstallDialog.java ├── SystemUpdateService.java └── SystemUpdateVerifierTask.java 搞出600多行代码,才发现跟GoogleServicesFramework这个包里的其他代码非常缠绵,只好作罢。 大概思路也弄明白了,跟我们一样,也是用Downloads.ByUri 这个组件下载文件, 调用系统函数 RecoverySystem.installPackage(context, new File(filename)); 唯一的差别是没有网络连接的情况下,引导用户到设置的界面,比较人性化,很注重用户体验,我们直接跳出个对话框,没有网络连接,以后是要修改的。 默认的,installPackage 这个函数只支持文件放在 /data或/cahce 目录,但是,一般一个系统升级包有70M,一般机器不能保证有那么大的空间,我们只好把文件放在 SD card里,修改installPackage 函数,让它支持 sdcard 目录: // from froyo, /sdcard ==> /mnt/sdcard } else if (filename.startsWith(“/mnt/sdcard/”)) […]

Categories
Android

Android 2.2 Market 依赖包

从2.1 到 Android 2.2(Froyo),变化是蛮大的,Android 2.1 安装market,需要装一大驼的东东: /etc/permissions/com.google.android.datamessaging.xml /etc/permissions/com.google.android.gtalkservice.xml /system/framework/com.google.android.gtalkservice.jar /system/app/EnhancedGoogleSearchProvider.apk /system/app/GoogleCheckin.apk /system/app/GoogleApps.apk /system/app/gtalkservice.apk /system/app/SetupWizard.apk /system/app/Vending.apk /system/app/TalkProvider.apk 到了 2.2 只用两个包就搞定: /system/app/GoogleServicesFramework.apk /system/app/Vending.apk 第一个,美其名曰:Google服务框架,整合了很多东西,2.1版本的Vending.apk login部分,也整合到了GoogleServicesFramework.apk,系统更新也在这包里。 具体的包,网上搜 Android 2.2的ROM,多的是。中间遇到了一个问题,就是无法建立帐号,在添加帐号,点公司/Goolge 这两项都无响应,开始怀疑是AccountAndSyncSettings.apk 这个包有问题。后面查出打开wifi后,kernel没有上报消息,状态栏没显示wifi的图标。

Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next