deodex 안 드 로 이 드 폰 ROM

xUltimated 의 실현 논 리 를 참고 하여 많은 수정 을 하여 최소 공구 꾸러미 를 간소화 하 였 다.
다운로드 주소:
http://download.csdn.net/detail/netsniffer/6017991
핸드폰 / system / app 에 있 는 모든 파일 을 origiapp 에서 / system / framework 의 모든 파일 을 origi 로 pull 합 니 다.frame
adb pull /system/app .\origi_app
adb pull /system/framework .\origi_frame
현재 디 렉 터 리 아래 jar 디 렉 터 리 아래 파일 목록:
-------------------------------------------------------
7z.dll 7z.exe adb.exe AdbWinApi.dll AdbWinUsbApi.dll baksmali.jar frame-dep.txt md5.exe sleep.exe smali.jar zipalign.exe
-------------------------------------------------------
그 속
frame - dep. txt 내용 (adb 셸 set 보기, BOOTCLASSPATH 환경 변수 내용 참조):
core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:sec_edm.jar:seccamera.jar

프레임 워 크 에서 odex 일괄 처리
deodex framework.bat
@shift
@setlocal
@REM @setlocal ENABLEDELAYEDEXPANSION
@ECHO OFF

cls

set count=0
if exist temp del .\temp\*.* /s /q > nul
if not exist temp mkdir temp > nul
dir /b /s .\origi_frame\*.odex | find /C /V "::" > .\temp\file_count
set /p file_count=<.\temp\file_count 
if not exist .\origi_frame\*.odex goto :error
if not exist .\origi_frame\*.jar goto :error1
if exist .\done_frame\*.jar goto :error2
:restart

if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul

if not exist done_frame mkdir done_frame 

for /F %%a in ('dir /x/b .\origi_frame\*.odex') do call :do_odex %%~na %%~xa
if %ERRORLEVEL%==10 goto :error3
goto :done

:do_odex
set base1=
@REM set base1=core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:sec_edm.jar:seccamera.jar
if not exist .\jar\frame-dep.txt goto :nodep
@REM for /f "tokens=* delims= " %%a in (.\jar\frame-dep.txt) do (
@REM  if exist .\origi_frame\%%a set base1=!base1!:%%a
@REM )

set /p base1=<.\jar\frame-dep.txt

:nodep

set /a count += 1
title Processing %count% of %file_count% ***DO NOT EXIT***
rem if %1.odex==core.odex goto :end
if %1.odex==guava.odex goto :end
echo. 
echo   Starting %1.odex
echo *****************************************
if %1==framework echo *******THIS WILL TAKE A LIL BIT!!********
echo * Deodexing...                          *

echo java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_frame\%1.odex -d .\origi_frame\
java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_frame\%1.odex -d .\origi_frame\
if not %ERRORLEVEL%==0 goto :merror4
:return

echo * Redexing...                           *
echo java -Xss100M -Xmx512M -jar .\jar\smali.jar out *
java -Xss100M -Xmx512M -jar .\jar\smali.jar out

echo * Processing...                         *
if %ERRORLEVEL%==10 goto :error3
copy .\origi_frame\%1.jar .\done_frame\%1.zip > nul
rename out.dex classes.dex
if %ERRORLEVEL%==1 goto :error3
cd .\done_frame

echo * Compressing/Aligning...               *
..\jar\7z a %1.zip ..\classes.dex > nul
..\jar\zipalign -f 4 %1.zip %1.jar> nul
del /q %1.zip
if %ERRORLEVEL%==1 goto :error4
cd ..
rmdir /s /q out > nul
del /q *.dex > nul
@Echo %1.odex-DONE -auto-frame- (%TIME% %DATE%) >> log.txt
echo *****************************************
echo   %1.jar Finished!
goto :end

:error
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo      ERROR!! No odex files found!!
echo *****************************************
@Echo **NO ODEX FILES** -auto-frame- (%TIME% %DATE%) >> log.txt
echo 
pause
exit 12

:error1
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo      ERROR!! No jar files found!!
echo *****************************************
@Echo **NO APK FILES** -auto-frame- (%TIME% %DATE%) >> log.txt
echo 
pause
exit 12

:error2
cls
color 6
echo 
echo.
echo *****************************************
echo    WARNING FILES EXIST IN "done_frame"
echo *****************************************
ECHO Do you want to delete files in "done_frame" [Yes/No]?
ECHO.
set CHOICE=error2
set INPUT=
set /P INPUT=[Y/N]: %=%
if "%INPUT%"=="yes" goto :p_del
if "%INPUT%"=="y" goto :p_del
if "%INPUT%"=="no" exit 11
if "%INPUT%"=="n" exit 11
if "%INPUT%"=="" goto :error2
if not "%INPUT%"=="dfsgsdgdg" goto :error2
ECHO.
:p_del

if exist .\done_frame\*.* del .\done_frame\*.* /s /q > nul
@Echo **FILES DELETED IN DONE_FRAME** -auto-frame- (%TIME% %DATE%) >> log.txt

cls
goto :restart

:error3
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo   MAJOR ERROR!! Please connect your phone!!
echo *****************************************
echo ********DELETING INCORRECT FILES*********
@Echo **lOST CONNECTION TO PHONE** -auto-frame- (%TIME% %DATE%) >> log.txt
@Echo **DELETING PROCESSED FILES** -auto-frame- (%TIME% %DATE%) >> log.txt
if exist out rmdir done_frame /s /q > nul
if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul
if exist temp rmdir temp /s /q > nul
echo 
pause
exit 10

:error4
echo *                                       *
echo *****************************************
echo   Restarting %1.odex
echo *****************************************
echo * ERROR! Trying something different!    *
echo * Deodexing...                          *




java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_frame\%1.odex -d .\origi_frame\
if not %ERRORLEVEL%==0 goto :merror4
goto :return
:merror4
color 4
pause
echo. 
echo. 
echo *****************************************
echo   MAJOR ERROR!! WITH DEODEXING! %1.odex
echo *****************************************
echo ********DELETING INCORRECT FILES*********
@Echo **ERROR DEODEXING %1.odex** -auto-frame- (%TIME% %DATE%) >> log.txt
@Echo **DELETING PROCESSED FILES** -auto-frame- (%TIME% %DATE%) >> log.txt
echo   please exit out of window "***Deodexing ADB Window, DO NOT EXIT!***"
if exist out rmdir done_app /s /q > nul
if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul
if exist temp rmdir temp /s /q > nul
echo 
pause
cls
exit 20

:copy
rem if %1.odex==core.odex copy /y .\origi_frame\core.* .\done_frame\ > nul
@Echo **MADE SPECIAL ARANGEMENT FOR CORE.ODEX** -auto-frame- (%TIME% %DATE%) >> log.txt
goto :end

:done
if exist temp rmdir temp /s /q > nul
pause
exit 0

:end

app 의 odex 통합
deodex app.bat
@shift
@setlocal
@REM @setlocal ENABLEDELAYEDEXPANSION
@ECHO OFF

cls
set count=0
if exist temp del .\temp\*.* /s /q > nul
if not exist temp mkdir temp > nul
dir /b /s .\origi_app\*.odex | find /C /V "::" > .\temp\file_count
set /p file_count=<.\temp\file_count
if not exist .\origi_app\*.odex goto :error
if not exist .\origi_app\*.apk goto :error1
if exist .\done_app\*.apk goto :error2
:restart

if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul


if not exist done_app mkdir done_app


for /F %%a in ('dir /x/b .\origi_app\*.odex') do call :do_odex %%~na %%~xa
if %ERRORLEVEL%==10 goto :error3
goto :done

:do_odex
set base1=
@REM set base1=core.jar:core-junit.jar:bouncycastle.jar:ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:sec_edm.jar:seccamera.jar
if not exist .\jar\frame-dep.txt goto :nodep
@REM for /f "tokens=* delims= " %%a in (.\jar\frame-dep.txt) do (
@REM  if exist .\origi_frame\%%a set base1=!base1!:%%a
@REM )

set /p base1=<.\jar\frame-dep.txt

:nodep


set /a count += 1
title Processing %count% of %file_count% ***DO NOT EXIT***
rem if %1.odex==core.odex goto :end
echo. 
echo   Starting %1.odex
echo *****************************************
echo * Deodexing...                          *

echo java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_app\%1.odex -d .\origi_frame\
java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_app\%1.odex -d .\origi_frame\ > nul
if not %ERRORLEVEL%==0 goto :merror4
:return
echo * Redexing...                           *
echo java -Xss100M -Xmx512M -jar .\jar\smali.jar out *
java -Xss100M -Xmx512M -jar .\jar\smali.jar out

echo * Processing...                         *
if %ERRORLEVEL%==10 goto :error3
copy .\origi_app\%1.apk .\done_app\%1.zip > nul
rename out.dex classes.dex
if %ERRORLEVEL%==1 goto :error3
cd .\done_app

echo * Compressing/Aligning...               *
..\jar\7z a %1.zip ..\classes.dex > nul
..\jar\zipalign -f 4 %1.zip %1.apk> nul
del /q %1.zip
if %ERRORLEVEL%==1 goto :error4 
cd ..
rmdir /s /q out > nul
del /q *.dex > nul
@Echo %1.odex-DONE -auto-app- (%TIME% %DATE%) >> log.txt
echo *****************************************
echo   %1.apk Finished!
goto :end

:error
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo      ERROR!! No odex files found!!
echo *****************************************
@Echo **NO ODEX FILES** -auto-app- (%TIME% %DATE%) >> log.txt
echo 
pause
exit 12

:error1
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo      ERROR!! No apk files found!!
echo *****************************************
@Echo **NO APK FILES** -auto-app- (%TIME% %DATE%) >> log.txt
echo 
pause
exit 12

:error2
cls
color 6
echo 
echo.
echo *****************************************
echo    WARNING FILES EXIST IN "done_app"
echo *****************************************
ECHO Do you want to delete files in "done_app" [Yes/No]?
ECHO.
set CHOICE=error2
set INPUT=
set /P INPUT=[Y/N]: %=%
if "%INPUT%"=="yes" goto :p_del
if "%INPUT%"=="y" goto :p_del
if "%INPUT%"=="no" exit 11
if "%INPUT%"=="n" exit 11
if "%INPUT%"=="" goto :error2
if not "%INPUT%"=="dfsgsdgdg" goto :error2
ECHO.
:p_del

if exist .\done_app\*.* del .\done_app\*.* /s /q > nul
@Echo **FILES DELETED IN DONE_APP** -auto-app- (%TIME% %DATE%) >> log.txt

cls
goto :restart

:error3
pause
cls
color 4
echo. 
echo. 
echo *****************************************
echo   MAJOR ERROR!! Please connect your phone!!
echo *****************************************
echo ********DELETING INCORRECT FILES*********
@Echo **lOST CONNECTION TO PHONE** -auto-app- (%TIME% %DATE%) >> log.txt
@Echo **DELETING PROCESSED FILES** -auto-app- (%TIME% %DATE%) >> log.txt
if exist out rmdir done_app /s /q > nul
if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul
if exist temp rmdir temp /s /q > nul
echo 
pause
exit 10

:error4
echo *                                       *
echo *****************************************
echo   Restarting %1.odex
echo *****************************************
echo * ERROR! Trying something different!    *
echo * Deodexing...                          *


java -Xss50M -jar .\jar\baksmali.jar -c %base1% -x .\origi_app\%1.odex -d .\origi_frame\
if not %ERRORLEVEL%==0 goto :merror4
goto :return
:merror4
color 4
pause
echo. 
echo. 
echo *****************************************
echo   MAJOR ERROR!! WITH DEODEXING! %1.odex
echo *****************************************
echo ********DELETING INCORRECT FILES*********
@Echo **ERROR DEODEXING %1.odex** -auto-app- (%TIME% %DATE%) >> log.txt
@Echo **DELETING PROCESSED FILES** -auto-app- (%TIME% %DATE%) >> log.txt
echo   please exit out of window "***Deodexing ADB Window, DO NOT EXIT!***"
if exist out rmdir done_app /s /q > nul
if exist out rmdir out /s /q > nul
if exist *.dex del /q *.dex > nul
if exist temp rmdir temp /s /q > nul
echo 
pause
cls
exit 20

:done
if exist temp rmdir temp /s /q > nul
pause
exit 0

:end

핸드폰 으로 deodex 파일 업데이트 테스트:
adb shell rm -r /system/framework/*.odex
adb shell rm -r /system/app/*.odex

adb push done_frame /system/framework/
adb push done_app /system/app/

adb shell sync
pause

좋은 웹페이지 즐겨찾기