2012-05-10 19 views
1

私はアンドロイドファイルシステムを読み取り専用ではなく読み書きとして再マウントする必要があります。私はコマンドプロンプトでそれを行う方法を知っていますし、アプリケーション開発のためにそれをどうやって進めるかも知っています。JavaからAndroidファイルシステムを再マウント

しかし、私はAndroidのソースコードを微調整に思い、そこに私は

Process proc=Runtime.getRuntime.exec("su"); 

を使用している場合、それは仕事をdoesnot。したがって、私はandroid.os.processのオブジェクトを同じものに使う必要があります。そして、私はここで立ち往生しています。スーパーユーザーのアクセス権を持っていたら

try { 
    // Perform su to get root privledges 
    Process p = Runtime.getRuntime().exec("su"); 

    DataOutputStream os = new DataOutputStream(p.getOutputStream()); 

    os.writeBytes("<..... here you may write commands ....>\n"); 

    // Close the terminal 
    os.writeBytes("exit\n"); 
    os.flush(); 
} catch (IOException e) { 
    toastMessage("not root"); 
} 
  • 、あなたには、いくつかの上で聴いadbdを開始することがあります。

  • 答えて

    0
    1. スーパーユーザのアクセス権を取得するには、このコードを試してみてください(あなたがインストールされ、スーパーユーザと根ざし電話が必要です) TCPポート:

      setprop service.adb.tcp.port 5555 
      adbd & 
      setprop service.adb.tcp.port -1 
      
    2. 選択したポートにTCP接続を開き、を発行しますコマンド。

    0

    実際、あなたは何をするつもりか分かりません。しかし、あなたがアンドロイドソース(aosp)を調整しているなら、init.rc(これはsystem/core/rootdirにあります)ファイルをシステムイメージrwに変更する方が簡単です。ランタイム中に状態を変更したい場合は、独自のネイティブアプリケーションを作成する必要があります(たとえば、run-asコマンドを調べる)。プロセスのuidをsuidとして変更し、ソースに埋め込みますあなたのアプリケーションから呼び出すことができます。

    +0

    私はカスタマイズされたROMを構築する必要があります。私はinit.rc cozを変更する必要はありません。常に読み書きされます。特定のユースケースを実装するためには、PackageServiceManager.javaに読み書きとしてマウントしてから、読み取り専用に戻したいと考えています。実際には私はシステム/アプリケーションディレクトリにあるapksを編集する必要があります。したがって、私は読み書きが必要です。 – CodeGuru

    +0

    その後、私の答えの2番目の部分に従ってください。アンドロイドソースであなたを作成し、このアプリを呼び出します。 – Yury

    関連する問題