0

dhcpcd(android default dhcp program) を実行するコマンドを送信するために、android プログラム mydhcp を作成します。

dhcpcd eth0

そして、BOOT_COMPLETED アクションを受け取る apk を作成します。BOOT_COMPLETED を受信すると、共有ライブラリ (JNI) libmydhcp.so を呼び出して mydhcp を制御します。すべてのプロセスは正常に実行されますが、dhcpcd の開始は失敗します。

私のapkの AndroidManifest.xml では、システムuidと同じuidがすでに設定されています:

android:sharedUserId="android.uid.system"

その他の使用許可:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

クラッシュ ポイントは main() にあり、external/dhcpcd/dhcpcd.c にあります。

pidfd = open(pidfile, O_WRONLY | O_CREAT | O_NONBLOCK, 0664);

この問題を解決するためにどのように変更できますか? それとも無理ですか?

4

1 に答える 1

0

上記のコメントに従って、コマンドをルートとして実行するには:

public void RunAsRoot(String[] cmds){
        Process p = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(p.getOutputStream());            
        for (String tmpCmd : cmds) {
                os.writeBytes(tmpCmd+"\n");
        }           
        os.writeBytes("exit\n");  
        os.flush();
}
于 2012-07-31T16:55:04.577 に答える