3

私はルート化されたAndroidデュアルコア電話以上のコア管理アプリを作成しています...したがって、このアプリが行うことは /sys ディレクトリ内のファイルを変更することなので、ルートまたは「su」を使用する必要があります。だから私がやっていることは、コマンドchmod 7777 /sys/devices/system/cpu/cpu1/onlineまたはecho \"0\" > /sys/devices/system/cpu/cpu1/onlineアプリからコマンドを実行すると、「No such file or directory」が返されるということですが、コードからコマンドをコピーして端末自体に貼り付けると、コマンドは完璧になり、私のポイントを完成させます...

コマンドを送信するために、私は自分用に作成したライブラリを使用しています。具体的には、 ROOT として必要なコマンドを実行する su(String) メソッドを使用しています。正常に動作します (SuperSU ログから確認できます)。 )、そして私は以前にそれを使用しました!

私が使用しているコードの一部を次に示します。

すべてを準備して開始する方法:

static public void ready_cores(){

        Shells.Start();//Starts the root shell so it could be used with su(String) method
        Shells.su("chmod 7777 /sys/devices/system/cpu/cpu3/online");//I have a dual-core so this one is normal to give me "No such file or directory"
        Shells.su("chmod 7777 /sys/devices/system/cpu/cpu2/online");//This one too
        Shells.su("chmod 7777 /sys/devices/system/cpu/cpu1/online");//This one should return no output and get executed successfully, more like in the terminal , but still returns NO such file or directory








    }

ものを実行するボタンのMYオンクリックリスナー:

Executable.ready_cores();//This is the above method

                D2.setOnClickListener(new View.OnClickListener() {//D2 is my button (obviously :p)

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                        Executable.disable_core(1);//It sends the following command as root : echo "0" > /sys/devices/system/cpu/cpu1/online
                        refresh(); //refreshes everything , don't bother with it , it causes no harm ...
                    }
                });

私の Shells.su(String) メソッド:

static public void su(String ssu){//BTW , the variable psu is defined at Start() as : psu = Runtime.getRuntime().exec("su")

cmd = ssu + "\r";


try {


    su = new DataOutputStream(psu.getOutputStream());
    su.flush();



    if (bool = true){
        su.writeBytes(cmd+ "\n");
        su.flush();
        bool = false;
    }else if (bool = false){
        su.writeBytes(cmd+ "\n");
        su.flush();
        bool = true;
    }else {
        su.writeBytes("\n" + cmd+ "\n");
        su.flush();
        bool = true;
    }


    if (ssu.contains("echo") &! ssu.contains(">")){
        su.close();
        su = new DataOutputStream(psu.getOutputStream());
    }



} catch (Exception ex) {
    // TODO Auto-generated catch block
    ex.printStackTrace();

}









}

また、外部ストレージの読み取りと書き込みのアクセス許可も追加しました!

4

0 に答える 0