Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Deodex Zipalign Tool やり直し
- clear
- # toolsフォルダチェック
- if [ ! -e tools ]; then
- echo "toolsフォルダがありません"
- echo "終了します"
- exit
- else
- chmod -R 0755 tools
- fi
- # Javaチェック
- check_java () {
- clear
- java -version
- if [ $? -eq 0 ]; then
- check_adb
- elif [ $? -eq 1 ]; then
- err_java
- elif [ $? -eq 2 ]; then
- err_java
- else
- err_unknown
- fi
- }
- # ADBチェック
- check_adb () {
- ./tools/adb-linux version
- if [ $? -eq 0 ]; then
- check_api
- elif [ $? -eq 1 ]; then
- err_adb
- elif [ $? -eq 2 ]; then
- err_adb
- else
- err_unknown
- fi
- }
- # APIレベル取得
- check_api () {
- clear
- echo "端末接続待ち"
- ./tools/adb-linux wait-for-device
- echo "端末のAPIレベル取得"
- api=`./tools/adb-linux shell getprop ro.build.version.sdk | sed 's/[^0-9]//g'`
- echo "端末のAPIレベル $api"
- # 取得したAPIレベルで条件分岐
- if [ $api -ge 19 ]; then
- adb_pull_kk
- elif [ $api -lt 19 ]; then
- adb_pull
- else
- err_unknown
- fi
- }
- # APIレベル19以上 端末から必要ファイル取得
- adb_pull_kk () {
- clear
- mkdir app framework priv-app work
- echo "appを取得"
- ./tools/adb-linux pull /system/app app
- echo "frameworkを取得"
- ./tools/adb-linux pull /system/framework framework
- echo "priv-appを取得"
- ./tools/adb-linux pull /system/priv-app priv-app
- if [ -e framework/webview ]; then
- rm -rf framework/webview
- fi
- # ファイル数チェック
- aapk=`find app | grep -c ".apk"`
- aodex=`find app | grep -c ".odex"`
- fapk=`find framework | grep -c ".apk"`
- fjar=`find framework | grep -c ".jar"`
- fodex=`find framework | grep -c ".odex"`
- papk=`find priv-app | grep -c ".apk"`
- podex=`find priv-app | grep -c ".odex"`
- echo "app apkファイル数:$aapk odexファイル数:$aodex"
- echo "framework apkファイル数: $fapk jarファイル数: $fjar odexファイル数: $fodex"
- echo "priv-app apkファイル数: $papk odexファイル数: $podex"
- echo "取得しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- app_deodex
- }
- # APIレベル18以下 端末から必要ファイル取得
- adb_pull () {
- clear
- mkdir app framework work
- echo "appを取得"
- ./tools/adb-linux pull /system/app app
- echo "frameworkを取得"
- ./tools/adb-linux pull /system/framework framework
- if [ -e framework/webview ]; then
- rm -rf framework/webview
- fi
- # ファイル数チェック
- aapk=`find app | grep -c ".apk"`
- aodex=`find app | grep -c ".odex"`
- fapk=`find framework | grep -c ".apk"`
- fjar=`find framework | grep -c ".jar"`
- fodex=`find framework | grep -c ".odex"`
- echo "app apkファイル数:$aapk odexファイル数:$aodex"
- echo "framework apkファイル数: $fapk jarファイル数: $fjar odexファイル数: $fodex"
- echo "取得しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- app_deodex
- }
- # app 繰り返しdeodex
- app_deodex () {
- clear
- if [ $aodex != "0" ]; then
- cd app
- # odexリスト
- aodexlist=`find *.odex | sed s/.odex//`
- # odexリスト分deodex繰り返し処理
- echo "app deodex開始"
- for aodexfile in ${aodexlist[@]}
- do
- clear
- echo "$aodexfile deodex中..."
- ../tools/baksmali -d ../framework -x $aodexfile.odex -o ../work/$aodexfile
- ../tools/smali ../work/$aodexfile -o ../work/classes.dex
- ../tools/7z a -tzip $aodexfile.apk ../work/classes.dex
- rm -rf ../work/$aodexfile $aodexfile.odex ../work/classes.dex
- echo "$aodexfile deodex完"
- done
- cd ..
- aapknew=`find app | grep -c ".apk"`
- aodexnew=`find app | grep -c ".odex"`
- echo "app apkファイル数: $aapknew odexファイル数: $aodexnew"
- echo "appのdeodex完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- framework_deodex
- else
- echo "appにodexファイルがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- framework_deodex
- fi
- }
- # framework 繰り返しdeodex
- framework_deodex () {
- clear
- if [ $fodex != "0" ]; then
- cd framework
- # XPERIA
- if [ -e playstationcertified.odex ]; then
- mv playstationcertified.odex com.playstation.playstationcertified.odex
- fi
- if [ -e cneapiclient_release.odex ]; then
- mv cneapiclient_release.odex cneapiclient.odex
- fi
- if [ -e com.quicinc.cne_release.odex ]; then
- mv com.quicinc.cne_release.odex com.quicinc.cne.odex
- fi
- # SemcGenericUxpResチェック
- echo " framework deodex開始"
- # if [ -e SemcGenericUxpRes.odex ]; then
- fapklist=`find *.apk | sed s/.apk//`
- for fapkfile in ${fapklist[@]}
- do
- clear
- echo "$fapkfile deodex中..."
- ../tools/baksmali -d ../framework -x $fapkfile.odex -o \
- ../work/$fapkfile
- ../tools/smali ../work/$fapkfile -o ../work/classes.dex
- ../tools/7z a -tzip $fapkfile.apk ../work/classes.dex
- rm -rf ../work/$fapkfile $fapkfile.odex ../work/classes.dex
- echo "$fapkfile deodex完"
- done
- # fi
- # odexリスト
- fodexlist=`find *.odex | sed s/.odex//`
- # odexリスト分deodex繰り返し処理
- for fodexfile in ${fodexlist[@]}
- do
- clear
- echo "$fodexfile deodex中..."
- ../tools/baksmali -d ../framework -x $fodexfile.odex -o \
- ../work/$fodexfile
- ../tools/smali ../work/$fodexfile -o ../work/classes.dex
- ../tools/7z a -tzip $fodexfile.jar ../work/classes.dex
- rm -rf ../work/$fodexfile $fodexfile.odex ../work/classes.dex
- echo "$fodexfile deodex完"
- done
- cd ..
- fapknew=`find framework | grep -c ".apk"`
- fjarnew=`find framework | grep -c ".jar"`
- fodexnew=`find framework | grep -c ".odex"`
- echo "framework apkファイル数: $fapknew jarファイル数: $fjarnew odexファイル数: $fodexnew"
- echo "frameworkのdeodex完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- if [ $api -ge 19 ]; then
- priv_app_deodex
- else
- app_zipalign
- fi
- else
- echo "frameworkにodexファイルがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- if [ $api -ge 19 ]; then
- priv_app_deodex
- else
- app_zipalign
- fi
- fi
- }
- # priv-app 繰り返しdeodex
- priv_app_deodex () {
- clear
- if [ $podex != "0" ]; then
- cd priv-app
- # odexリスト
- podexlist=`find *.odex | sed s/.odex//`
- # odexリスト分deodex繰り返し処理
- echo "priv-app deodexk開始"
- for podexfile in ${podexlist[@]}
- do
- clear
- echo "$podexfile deodex中..."
- ../tools/baksmali -d ../framework -x $podexfile.odex -o ../work/$podexfile
- ../tools/smali ../work/$podexfile -o ../work/classes.dex
- ../tools/7z a -tzip $podexfile.apk ../work/classes.dex
- rm -rf ../work/$podexfile $podexfile.odex ../work/classes.dex
- echo "$podexfile deodex完"
- done
- cd ..
- papknew=`find priv-app | grep -c ".apk"`
- podexnew=`find priv-app | grep -c ".odex"`
- echo "priv-app apkファイル数: $papknew odexファイル数: $podexnew"
- echo "priv-appのdeodex完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- app_zipalign
- else
- echo "priv-appにodexファイルがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- app_zipalign
- fi
- }
- # app apk最適化
- app_zipalign () {
- clear
- azip=`find app | grep -c ".apk"`
- if [ $azip != "0" ]; then
- cd app
- # apkリスト
- aziplist=`find *.apk`
- # apkリスト分繰り返し最適化処理
- echo "最適化開始"
- for azipfile in ${aziplist[@]}
- do
- ../tools/zipalign-linux 4 $azipfile $azipfile-ed
- rm $azipfile
- mv $azipfile-ed $azipfile
- echo "$azipfile 最適化完"
- done
- cd ..
- azipnew=`find app | grep -c ".apk"`
- echo "app apkファイル数: $azipnew"
- echo "appの最適化完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- framework_zipalign
- else
- echo "appに最適化するapkがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- framework_zipalign
- fi
- }
- # framework apk最適化
- framework_zipalign () {
- clear
- fzip=`find framework | grep -c ".apk"`
- if [ $fzip != "0" ]; then
- cd framework
- # apkリスト
- fziplist=`find *.apk`
- # apkリスト分繰り返し最適化処理
- echo "最適化開始"
- for fzipfile in ${fziplist[@]}
- do
- ../tools/zipalign-linux 4 $fzipfile $fzipfile-ed
- rm $fzipfile
- mv $fzipfile-ed $fzipfile
- echo "$fzipfile 最適化完"
- done
- cd ..
- fzipnew=`find framework | grep -c ".apk"`
- echo "framework apkファイル数: $fzipnew"
- echo "frameworkの最適化完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- if [ $api -ge 19 ]; then
- priv_app_zipalign
- else
- mk_zip
- fi
- else
- echo "frameworkに最適化するapkがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- if [ $api -ge 19 ]; then
- priv_app_zipalign
- else
- mk_zip
- fi
- fi
- }
- # priv-app apk最適化
- priv_app_zipalign () {
- clear
- pzip=`find priv-app | grep -c ".apk"`
- if [ $pzip != "0" ]; then
- cd priv-app
- # apkリスト
- pziplist=`find *.apk`
- # apkリスト分繰り返し最適化処理
- echo "最適化開始"
- for pzipfile in ${pziplist[@]}
- do
- ../tools/zipalign-linux 4 $pzipfile $pzipfile-ed
- rm $pzipfile
- mv $pzipfile-ed $pzipfile
- echo "$pzipfile 最適化完"
- done
- cd ..
- pzipnew=`find priv-app | grep -c ".apk"`
- echo "priv-app apkファイル数: $pzipnew"
- echo "priv-appの最適化完了しました"
- echo "Enterkey押すと次に進みます"
- read Wait
- mk_zip_kk
- else
- echo "priv-appに最適化するapkがありません"
- echo "Enterkey押すと次に進みます"
- read Wait
- mk_zip_kk
- fi
- }
- mk_zip_kk () {
- clear
- mkdir system
- mv app system/
- mv framework system/
- mv priv-app system/
- cp tools/kk.zip deodex.zip
- create_zip
- }
- mk_zip () {
- clear
- mkdir system
- mv app system/
- mv framework system/
- cp tools/ot.zip deodex.zip
- create_zip
- }
- # zip作成
- create_zip () {
- # build.propから端末名とビルド番号取得
- ./tools/adb-linux pull /system/build.prop work/
- devNAME=`grep ro.product.device work/build.prop | sed 's/ro.product.device=//g'`
- devID=`grep ro.product.id work/build.prop | sed 's/ro.product.id=//g'`
- zipNAME="$devNAME""_""$devID""_deodex"
- echo "zipファイルに追加圧縮"
- ./tools/7z a deodex.zip system
- echo "zipファイルに署名"
- ./tools/signapk deodex.zip $zipNAME.zip
- rm -rf system work deodex.zip
- echo "署名しました"
- echo "$zipNAME.zipを端末のSDカードに転送して"
- echo "CWM,TWRPでインストールして下さい"
- echo "Enterkey押すと終了します"
- read Wait
- ./tools/adb-linux kill-server
- }
- clear
- echo ""
- echo "*************************************************************"
- echo "* Deodex Zipalign *"
- echo "*************************************************************"
- echo ""
- echo "adbバージョン:1.0.31"
- echo "baksmali,smaliバージョン:2.0.3"
- echo
- echo "1 - 開始"
- echo "0 - 終了"
- echo -e
- echo -e -n "番号選択 : "
- read opt
- case $opt in
- 1) check_java;;
- 0)
- clear
- exit ;;
- esac
- # エラー処理
- err_java () {
- clear
- echo "Javaが実行できません"
- echo "処理を中止します"
- read Wait
- exit
- }
- err_adb () {
- clear
- echo "adbを実行できません"
- echo "処理を中止します"
- read Wait
- exit
- }
- err_unknown () {
- clear
- echo "不明なエラーが発生しました"
- echo "処理を中止します"
- read Wait
- exit
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement