2014/03/15

Toggleでroot/unrootを切り替えるアプリをTaskerで作成


CACHATTOのランチャーを作成したのと類似の手法で、Taskerを使ってroot/unrootをトグルで切り替えるアプリを作成してみました。

root未取得の端末をワンクリックでルート化するツールではなく、既にroot化されている端末のsuやSupaeruser.apkをリネームして一時的にunroot状態にするツールです。

(参考)Taskerを使って一時的にroot権限とUSBデバッグを無効化してアプリを起動する方法(CACHATTO対応)
http://galaxy-shw-m110s.blogspot.kr/2014/03/taskerrootusb.html

CACHATTOのランチャーではUSBデバッグの自動On/Offを行いましたが、このツールではUSBデバッグの設定は変更しません。

【必要な物】

Tasker(有料)
https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm

Tasker App Factory(エクステンション)
https://play.google.com/store/apps/details?id=net.dinglisch.android.appfactory

【基本動作】

Taskerで単純なタスクをアプリ化し、以下の動作をワンタッチで行えるようにしました。


ホーム画面にあるアイコンをクリック
=>rooted状態なら、unrootしてポップアップを表示
=>unroot状態なら、root化してポップアップを表示

【アクションの流れ】


1. Run Shell : xsuがあるかどうかを確認します
2. If : xsuがなければ
3. Run Shell : suとSuperuser.apkをリネームして無効にします
4. Popup : "SU removed."と表示します
5. Else : それ以外の場合は
6. Run Shell : suとSuperuser.apkを元の名前に戻します
7. Popup : "Your device is rooted."と表示します
8. End If : 処理を終了します

【設定例】

1. Run Shell : suがあるかどうかを確認します


実際にはリネーム後の"xsu"の有無を確認しています。

2. If : xsuがなければ


xsuが無いことが真ならば、次のアクションに進みます。

3. Run Shell : suとSuperuser.apkをリネームして無効にします


スクリプトは以下のものをエディタで開いてクリップボード経由で貼り付けました。

 
#!/system/bin/sh
if [ -f /system/xbin/su ]; then
 su -c 'busybox mount -o remount,rw /system /system'
 if [ -f /system/app/Superuser.apk ]; then
  su -c "busybox mv /system/app/Superuser.apk /system/app/xsuperuser.apk"
 fi
 su -c "busybox mv /system/xbin/su /system/xbin/xsu"
fi


suとSuperuser.apkが以下のフォルダにあることを前提にしていますので、自分の環境に合わせて修正してください。

/system/xbin/su
/system/app/Superuser.apk

Use Rootは選択しないでください。

Continue Task After Errorは有効にしています。

4. Popup : "SU removed.と表示します


任意のデザイン、コメント、タイムアウトにしてください。

5. Else : それ以外の場合は


xsuが存在する場合の処理です。

6. Run Shell : suとSuperuser.apkを元の名前に戻します


スクリプトは以下のものをエディタで開いてクリップボード経由で貼り付けました。

 
#!/system/bin/sh
if [ -f /system/xbin/xsu ]; then
 xsu -c 'busybox mount -o remount,rw /system /system'
 if [ -f /system/app/xsuperuser.apk ]; then
  xsu -c "busybox mv /system/app/xsuperuser.apk /system/app/Superuser.apk"
 fi
 xsu -c "busybox mv /system/xbin/xsu /system/xbin/su"
fi

Use Rootは選択しないでください。

Continue Task After Errorは有効にしています。

7. Popup : "Your device is rooted."と表示します


任意のデザイン、コメント、タイムアウトにしてください

8. End If : 処理を終了します


【アプリ化】

CACHATTOのランチャーを作成した時同様に、アプリ化します。

Taskerを使って一時的にroot権限とUSBデバッグを無効化してアプリを起動する方法(CACHATTO対応)
http://galaxy-shw-m110s.blogspot.kr/2014/03/taskerrootusb.html

【スクリプトだけで行う方法】

アプリ化ではありませんが、ショートカットを作れるGScriptの様なアプリを使えば、スクリプトだけで同様の動作をさせる事が出来ます。

GScript Lite
https://play.google.com/store/apps/details?id=nl.rogro.GScriptLite


以下のスクリプトを参考にしてみてください。

#!/system/bin/sh
if [ -f /system/xbin/su ]; then
 echo "             SU has been removed.          "
 echo
 echo
 echo
  echo
 echo
 echo
 echo
 echo
 echo
 su -c 'busybox mount -o remount,rw /system /system'
 if [ -f /system/app/Superuser.apk ]; then
  su -c "busybox mv /system/app/Superuser.apk /system/app/xsuperuser.apk"
 fi
 su -c "busybox mv /system/xbin/su /system/xbin/xsu"
# xsu -c 'busybox mount -o remount,ro /system /system'
 exit 0;
elif [ -f /system/xbin/xsu ]; then
 echo "            Your device is rooted.          "
 echo
 echo
  echo
 echo
 echo
 echo
 echo
 echo
 echo
 if [ -f /system/app/xsuperuser.apk ]; then
  xsu -c "busybox mv /system/app/xsuperuser.apk /system/app/Superuser.apk"
 fi
 xsu -c 'busybox mount -o remount,rw /system /system'
 xsu -c "busybox mv /system/xbin/xsu /system/xbin/su"
# su -c 'busybox mount -o remount,ro /system /system'
fi 


0 件のコメント:

コメントを投稿