代码改变世界

Nook2之搞机记

2012-11-24 13:52 囧月 阅读(...) 评论(...) 编辑 收藏

曾多次搞机都要临时查好多资料,为了便于以后继续搞机,现把搞机的过程记录下来。

准备资源

  1. noogie.img 制作引导盘的镜像:http://code.google.com/p/nst-recovery/downloads/list
  2. Win32DiskImager 制作引导盘的工具: https://launchpad.net/win32-image-writer/+download
  3. 一张>=128MmicroSD(TF)卡,用于制作引导盘
  4. DiskImage 1.6 用于备份及还原nook2:http://www.roadkil.net/program.php/P12/Disk%20Image 下载对应的系统版本
  5. DiskGenius 用于备份分区表:http://www.diskgenius.cn/
  6. uRamdisk 用于执行adb命令(分WIFI和USB版):http://code.google.com/p/nst-recovery/downloads/list
  7. adbandroid SDK(http://developer.android.com/sdk/index.html#download)中提取,或者SuperOneClick(http://shortfuse.org/?page_id=2)
  8. suSuperuser.apk 用于获取root权限:从http://nookdevs.com/NookColor_Installing_su_and_the_Superuser_app 下载或者更新的版本
  9. sqlite 3 shell 用于修改sqlite数据库:http://www.sqlite.org/download.html找到sqlite-shell-win32…的zip包
  10. NookColor Tools用于开启usb调试、更换输入法等(自带Launcher):http://forum.xda-developers.com/showthread.php?t=868366
  11. jre 用于运行jar程序:http://java.com/en/download/
  12. (可选)apktool (需要jre) 用于反编译apk:http://code.google.com/p/android-apktool/downloads/list

注意:这些资源文件最好放在英文目录,否则可能有不可预知的错误发生

系统升级

  1. Barnes & Noble下载升级zip包
  2. nook开机状态下,usb连接电脑
  3. 把下载的zip包放入nook分区(注意:不是microSD卡) 切换到屏保状态下
  4. 等待几分钟nook会自动重启升级

话说目前最新的1.2.0还是杯具的Android 2.1系统,好多软件不能装啊

系统重置

重置系统数据

开机状态下通过Settings中的Erase & Deregister Device功能;

或者在关机状态下,按住开机键开机同时按住左右两个下面的翻页键,等出现是否重置的提示,按n确认。

恢复出厂设置

八次打断法:在关机状态下,开机出现Read Forever,然后按住电源键直到闪屏松开(一直重复大约8次),就会自动进入恢复出厂设置

另外可以通过adb命令,已root的机器开机状态下(未试过):

    adb shell
    echo -n -e "\x08\x00\x00\x00" > /rom/devconf/BootCnt
    reboot

Root

替换uRamdiak(这里用的是WIFI版本,如果没有无线路由器,也可以用usb版本)

  1. 关闭nook2:按住电源键选择power off
  2. 插入引导盘microSD卡
  3. 按住电源键开机,屏幕会出现Root Forever
  4. 通过usb线连接电脑,会出现boot分区
  5. 复制uRamdisk覆盖boot到boot分区
  6. 拔出microSD卡并重启

WIFI版本的uRamdisk有一定风险,容易被扫描到,所以不用adb等功能时务必关闭WIFI。

 adb connect <ip> 
    adb install Superuser.apk
    adb push su /data/local/
    adb shell
    cd /system/bin
    mount -o remount,rw /dev/block/mmcblk0p5 /system
    cat /data/local/su > su
    chmod 6755 su
    reboot

开启"允许安装非市场应用"

    adb connect <ip>
    adb shell
    mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
    exit
    adb pull /data/data/com.android.providers.settings/databases/settings.db settings.db
    sqlite3 settings.db "update secure set value=1 where name='install_non_market_apps';"
    adb push settings.db /data/data/com.android.providers.settings/databases/settings.db
    del settings.db
    adb reboot

这一步也可以在NookColor Tools中设置

关闭自动升级(非必须)

在开着wifi的情况下,设备可能会自动下载升级包进行升级,特别是已root的机器。

    adb connect <ip>
    adb pull /data/data/com.bn.devicemanager/databases/devicemanager.db devicemanager.db
    sqlite3 devicemanager.db "update registry set value='manual' where name='com.bn.device.fota.mode';"
    adb push devicemanager.db /data/data/com.bn.devicemanager/databases/devicemanager.db
    del devicemanager.db
    adb reboot

修改键盘映射(适用于1.0,1.1)

注意:此方法在1.2.0无效,而且替换了android.policy.jar和services.jar之后,机器重启会卡在Read Forever,只能恢复出厂设置。

此方法需要用到NookTouch Tools以及对应nook2版本(注意:只有1.0以及1.1的)的jars(android.policy.jar、services.jar):(http://forum.xda-developers.com/showthread.php?t=1289894)

    adb connect <ip>
    adb install NookTouchTools-1.0b2.apk
    adb shell
    mount -o remount,rw /dev/block/mmcblk0p5 /system
    exit
    adb push jars/android.policy.jar /system/framework/
    adb push jars/services.jar /system/framework/
    adb reboot

修改键盘映射(适用于1.2.0)

此方法需要自行编译android.policy.jar、services.jar(https://github.com/doozan/NookTouchPatches),步骤如下:

准备工具

  1. 下载patche01.zip并解压得到patch.exe

  2. 下载7za920.zip并解压得到7za.exe

  3. 下载这两个jar文件:baksmali, smali

  4. 下载1.2.0系统使用的patch文件:android.policy.patchservices.patch

  5. 把以上得到的文件放到同个目录下

解压并给android.policy.jar打补丁

adb pull /system/framework/android.policy.jar android.policy.orig.jar
java -jar baksmali-1.4.0.jar -o android.policy android.policy.orig.jar
patch -p1 < android.policy.patch

重新编译android.policy.jar

7za.exe e android.policy.orig.jar  -oandroid.policy-bin
java -jar smali-1.4.0.jar -o android.policy-bin\classes.dex android.policy
cd android.policy-bin
..\7za.exe a -mx9 -tzip ..\android.policy.jar *
cd ..

解压并给services.jar打补丁

adb pull /system/framework/services.jar services.orig.jar
java -jar baksmali-1.4.0.jar -o services services.orig.jar
patch -p1 < services.patch

重新编译services.jar

7za.exe e services.orig.jar  -oservices-bin
java -jar smali-1.4.0.jar -o services-bin\classes.dex services
cd services-bin
..\7za.exe a -mx9 -tzip ..\services.jar *
cd ..

替换重新编译的两个jar文件

adb shell mount -o rw,remount -t ext2 /dev/block/mmcblk0p5 /system
adb push android.policy.jar /system/framework/
adb push services.jar /system/framework/
adb reboot

重启之后安装NookTouch Mod Manager(https://github.com/doozan/NookTouchModManager/downloads),然后就可以修改键盘的映射了。

安装软件以及输入法等

常用的软件有:

  1. NookColor Tools
  2. Root Explorer(http://www.coolapk.com/apk/1229/)
  3. System App Remover(http://www.coolapk.com/apk/3200/)
  4. APV PDF Viewer Pro(http://code.google.com/p/apv/downloads/list)
  5. (可选)讯飞PAD语音输入法:(http://ime.voicecloud.cn)
  6. (可选)AirDroid(http://www.coolapk.com/apk/4335/)
  7. (可选)TaskMan(http://www.coolapk.com/apk/2750/)
  8. (可选)Nook Touch Launcher(http://forum.xda-developers.com/showthread.php?t=1300285)

使用dos for命令可以批量安装程序(比如apk文件都在apks目录下):

    adb connect <ip>
    for /r %a in (apks\*.apk) do adb install "%a"
    adb reboot

其实有了AirDroid之后,比adb更加方便了,不管是安装软件或者拷贝文件。

启动Launcher

安装好以上软件重启之后,可以选择启动Nook Touch Launcher;如果没装Nook Touch Launcher,则可以启动NookColor Tools的Launcher。

首先通过apktool反编译:

java -jar apktool.jar d NookColorTools_0.2.apk

查看得到的AndroidManifest.xml可以知道NookColor Tools的入口,然后通过adb启动:

adb shell am start -n com.benhirashima.nookcolorsettings/com.ben
hirashima.nookcolorsettings.NCSettings

启动Nook Touch Launcher则是:

adb shell am start -n io.xor.nooktouchtools/io.xor.nooktouchtools.MainActivity

开启NookColor Tools之后,通过All Settings->Development->Android Launcher可以启动NoolColor Tools带的Launcher。

设置输入法

  1. 通过Launcher打开Root Explorer),注意低版本Root Explorer可能需要先Mount R/W
  2. 把com.benhirashima.nookcolorsettings.apk和com.iflytek.inputmethod.pad.apk从/data/app移动到/system/app(此操作也可以通过adb命令完成)
  3. 重启
  4. 在NookColor Tools中Choose Keyboard选择新的输入法

其他的快捷辅助软件

  1. Button Savior 按键救星(http://www.coolapk.com/apk/3382/)
  2. SmartBar 智能状态栏(http://www.coolapk.com/apk/2344/)
  3. Smart Taskbar 智能任务栏(http://www.coolapk.com/apk/2821/)
  4. Conjure 快速启动(http://www.coolapk.com/apk/6295/)
  5. Virtual Button Bar 虚拟工具栏(http://www.coolapk.com/apk/4505/)
  6. 其他支持Android 2.1的状态栏插件、手势插件、虚拟按键插件

可以自行挑选其中几个作为常用软件,其中Button Savior需要先做如下设置

  1. 需要NookColor Tools在/system/app目录
  2. 通过All Settings->Development->USB debugging开启usb调试
  3. 然后就可以开启Button Savior进行设置了

可精简的系统程序

  1. Airruntime
  2. CloudService
  3. ContactsProvider
  4. CrytoServer
  5. DemoMode
  6. Music
  7. NookCommunity
  8. Phone
  9. Picotts
  10. Shop
  11. Social
  12. TelephoneProvider
  13. TtsService
  14. WaveformDownloader

除了以上可精简的意外,还有以下程序可精简(需谨慎):

  1. BnCloudRequestSvc.apk
  2. CloudService.apk
  3. DrmProvider.apk
  4. Gallery.apk
  5. QuickStratActivity.apk
  6. UserDictionaryProvider.apk

另外如浏览器如果不用也可删除。

参考资料

  1. http://nookdevs.com/Nook_Simple_Touch/Rooting
  2. http://www.hi-pda.com/forum/viewthread.php?tid=857877&extra=page%3D1
  3. http://forum.xda-developers.com/forumdisplay.php?f=1198