miui 2.3.7重签名/system/app也能安装
本人电话比较少,但是使用乐w100刷的miui 2.3.7版本的通讯录却没有显示sim联系人一项,只有导入功能,非常不方便,
于是想找一个另外的rom来替换通讯录,
发现在安装时,却提示,证书不能用.
在网上找了很多,都说修改了系统的apk不能重新签名,
否则无法安装,
要么就说修改时别改那个xml,然后把原来的签名文件移回.
但是这些做法无法满足我的要求.
经过测试,发现miui 2.3.7只要把rom.zip中的/system/app所有apk使用自己的签名(此签名我是在网上下载的,没有自己制作,应该是那个testkey),全部签名.
然后再到/system/framework/framework-res.apk,也用它来签名一下,
那么即可使用其它rom的apk进行签名也安装替换了,至于能不能使用,得看那个apk了.
但是能确保它能安装.
至于其它rom,其它签名文件,我就不太清楚是否可以这样弄.
至少我用的3gw100的是这样,
那么也不用自己完全的编译一个rom这么麻烦.
如我下载的
然后在网上再下载了个
是乐娃还是什么的
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=MIUI
ro.build.display.id=MIUI-12.12.12
再下载个
v880-052.zip的rom,把它的通讯录与保存apk用相同的key签名,安装后可以使用.
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=GWK74
ro.build.display.id=GWK74
ro.build.version.incremental=eng.geno.20120302.012745
ro.build.version.sdk=10
ro.build.version.codename=REL
ro.build.version.release=2.3.7
ro.build.date=Fri Mar 2 01:28:58 CST 2012
ro.build.date.utc=0
这是安装时的结果,成功安装.
点击apk时,发现可以正常使用
把要安装程序/目录拖入这里,回车安装
直接回车返回主菜单
C:\Users\Administrator\Desktop\ContactsProvider.apk
1468 KB/s (150334 bytes in 0.100s)
pkg: /data/local/tmp/ContactsProvider.apk
Success
完成.
把要安装程序/目录拖入这里,回车安装
直接回车返回主菜单
C:\Users\Administrator\Desktop\Contacts.apk
1656 KB/s (561502 bytes in 0.331s)
pkg: /data/local/tmp/Contacts.apk
Success
完成.
把要安装程序/目录拖入这里,回车安装
直接回车返回主菜单
工具箱.bat(前面编写时,没有测试,有些有错误,修正了几个使用出现问题的功能.)
-----------
@echo offset batDir=%~dp0CD "%batDir%"set binDir=%batDir%bin\title 检测必须文件...set lup=%binDir%update-binaryif not exist %lup% (echo 找不到刷机二进制文件:%lup%echo 此文件提取自rom的zip包/META-INF/com/google/android/update-binarygoto stop)set signJar=%binDir%sign.jarif NOT Exist %signJar% ( echo rom压缩包签名的jar不存在:%signJar%echo 本工具名字叫:signapk,后缀名是jar,可在网络上下载到goto stop)set pem=%binDir%certificate.x509.pemif NOT Exist %pem% ( echo 用于给rom压缩包签名的证书文件不存在:%pem%echo 本文件使用的是testkey,网上下载即可goto stop)set key=%binDir%key.pk8if NOT Exist %key% ( echo 用于给rom压缩包签名的key文件不存在:%key%echo 本文件使用的是testkey,网上下载即可goto stop)set adb=%binDir%adb.exeif NOT Exist %adb% ( echo 连接手机的adb不存在:%adb%echo 可以在网上下载adb.exe及相关的dllgoto stop)echo.title 检测java...echo 下面检测是否有java使用环境call :javaTestgoto sign:javaTestset ea=%ERRORLEVEL%echo 运行环境值当前是:%ea% java.exe -versionset eb=%ERRORLEVEL%echo 测试java环境后,运行环境值是:%eb%if %ea% EQU %eb% (echo 运行环境测试前后相同[没有出错]:%ea% == %eb%echo 证明java环境正常) else (echo 运行环境测试前后不同[java出错影响]:%ea% != %eb%echo 证明没有java环境,无法进行签名,请安装java再使用pauseexitexit):eof_javaTestgoto :EOF:signecho.title 准备签名...echo java正常,准备签名set romSign=%TEMP%\android.rom.sign.zipif exist %romSign% (echo.echo 发现一个签过名的rom:%romSign%title 有rom,请确认?echo.echo 直接使用? 输入任意字符回车echo.echo 忽略重签直接回车set /p tos=if not "%tos%" == "" goto eof_signRom):signRomecho.title rom的zip?echo 请拖入需签名并刷机的rom的zip包echo.echo 如果想跳此步骤,直接使用手机上的/sdcard/upload.zip,请直接回车跳过echo.set /p romZip=if "" == "%romZip%" (echo 你选择跳过签名,进入连线手机..goto recovery)if not exist "%romZip%" (echo rom的zip包路径不存在,请重新选择goto signRom)echo 对rom签名...title rom签名...java -jar "%signJar%" "%pem%" "%key%" "%romZip%" "%romSign%"echo.echo 签名完成.:eof_signRom:recoverytitle 将刷机?echo 签名后的rom文件是:%romSign%.echo.echo 程序将暂停几秒echo.echo 如果你想自己手动移动签名后的rom到手机sdcard中echo 请现在关掉本程序,移动好再运行echo.echo 或是按键盘上的pause键暂停住下运行echo (双击运行的bat才有效,使用powercmd之类外壳可能无法暂停)echo.echo pause暂停后,回车即可继续echo.title 待选择中..echo 程序延时5秒中(于%TIME%)..ping 127.0.0.1 -n 5 >nulecho 程序恢复运行title 连线...echo 重置adb服务到usb模式,或防止连接服务假死%adb% kill-server%adb% start-server:checkDevecho.echo 等待服务连接手机...title 查找/连手机中...echo 延时5秒,待adb恢复中[于%TIME%]..ping 127.0.0.1 -n 5 >nulecho 查找是否有处于recovery状态的手机%adb% devices|find "recovery"echo 结果意义:echo 0: 表示,有此状态的手机连结着;echo 1: 表示,无此状态的手机;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% EQU 0 (echo.echo 发现有手机处于recovery模式,进入上传步骤goto startUpload)echo 未找到处于recovery状态的手机echo.echo 查找是否有正常连线状态的手机%adb% devices|find "device"echo 结果意义:echo 0: 表示,有此状态的手机连结着;echo 1: 表示,无此状态的手机;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% EQU 0 (echo.echo 发现有手机处于正常连接模式echo.echo 重启手机到recovery状态...%adb% reboot recoveryecho 指令发送完成,延时30秒等待手机进入recovery状态[于%TIME%]...title 重启,待连线...ping 127.0.0.1 -n 30 > nulgoto checkDev)title 无连线手机?echo 未找到任何连线手机echo 如果你确认已经连线手机echo 请检查连接接口是否正常echo 或是尝试拨出重新连接echo.echo 稍后重试...echo 无连线手机,延时30秒后重试[于%TIME%]...ping 127.0.0.1 -n 30 > nulgoto checkDev:startUploadtitle 挂载sdcard...echo 连上手机,将挂载sdcard...echo 尝试挂载sdcardecho."%adb%" shell mount /sdcard |find /I "can't find"echo 结果意义:echo 0: 表示,挂载失败;echo 1: 表示,挂载成功;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% EQU 0 (echo 挂载分区/sdcard失败,才能挂载,本挂载方式不适用你recovery,请修改goto stop)echo 挂载sdcard成功,准备上传rom的zip到sdcard中title 挂上sdcard,查upload.zipset sdZip=/sdcard/update.zip:checkZip"%adb%" shell ls %sdZip%|find /I "No such"echo 结果意义:echo 0: 表示,卡中无rom的zip,需要上传;echo 1: 表示,卡存在zip;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% NEQ 0 (title 卡有upload.zipecho 发现sdcard上已经存在upload.zipecho 不再上传刚才签名过的rom文件,用卡中的goto eof_startUpload)echo 卡无upload.zip:reupecho 准备上传签名好的rom...if not exist "%romSign%" (echo 待上传rom不存在:%romSign%goto stop)title rom将上传...echo 正在上传"%adb%" push "%romSign%" %sdZip%echo 结果意义:echo 0: 表示,上传成功;echo 1: 表示,失败;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% NEQ 0 (echo %romSign%"echo 上传到echo %sdZip%echo 失败.goto stop):eof_startUploadecho.echo 验证zip"%adb%" shell ls %sdZip%|find /I "No such"echo 结果意义:echo 0: 表示,卡中无rom的zip,需要上传;echo 1: 表示,卡存在zip;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% EQU 0 (title 卡无upload.zip,重传.echo 卡无rom文件/上传zip失败,需要重新上传goto reup)echo 检测到手机上的/sdcard/upload.zipecho 将上传刷机文件title 将上传刷机文件set pup=/tmp/update-binarytitle 上传刷机bin...echo 上传用于更新的二进制文件%lup%到手机%pup%,并设置成可运行%adb% push "%lup%" %pup%%adb% shell chmod 0777 %pup%echo.echo 检查刷机执行文件是否上传好echo.%adb% shell ls %pup%|find /I "No such"echo 结果意义:echo 0: 表示,上传失败;echo 1: 表示,上传成功;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% EQU 0 (echo 刷机执行文件上传失败goto stop)echo 刷机执行文件上传成功title 将刷机...echo 准备工作完成,下面准备开始刷机set log=%TEMP%\android_recovery_update_log.txtecho. >"%log%"echo 刷机日志于 %DATE% %TIME%>>%log%title 刷机中...echo 正在刷机中...请稍候...%adb% shell "%pup%" 2 2 %sdZip% >> %log%echo.title 刷机结束,重启..echo 刷机完成.explorer "%log%"echo 删除刷机文件%sdZip%%adb% shell rm "%sdZip%"echo 重启设备到正常模式title 重启中...echo.%adb% rebootif not exist "%batDir%app" (echo 应用文件夹不存在,不安装应用goto stop):instApptitle 将安装应用...echo 准备安装"%batDir%app"下的应用.echo 查找是否有正常连线状态的手机%adb% devices|find "device"echo 结果意义:echo 0: 表示,有此状态的手机连结着;echo 1: 表示,无此状态的手机;echo 查找结果:echo %ERRORLEVEL%if %ERRORLEVEL% NEQ 0 (title 无连线手机?echo 未找到任何连线手机echo 你把手机拨出了?echo 如果你确认已经连线手机echo 请检查连接接口是否正常echo 或是尝试拨出重新连接echo.echo 稍后重试...echo 无连线手机,延时30秒后重试[于%TIME%]...ping 127.0.0.1 -n 30 > nulgoto instApp)title 安装应用...echo.echo 连线成功,安装应用程序...for /r %batDir%app %%a in (*.apk) do (echo %%a"%adb%" install -r -s "%%a")title 应用安装完成echo 应用安装完成echo 所有的操作完成:stoptitle 操作结束echo 运行结束pause