2011-12-22 15 views
1

他のJavaアプリケーションからAndroid仮想デバイスを作成したいとします。 デフォルトのAndroid AvdManagerを使用したくないのは、AVDを作成する場所を設定できず、エキゾチックなキャラクターに問題があるためです。JavaアプリケーションからAndroid仮想デバイスを作成するプログラムで

私はAvdMagagerのsdklib.jarを取得し、これを実行しようとします。

しかし、私は、ログを持っているので、私はAVDを作成することはできません:AVDフォルダにコピーするABI%2 $ sの「%1 $ s」はファイルを見つけることが
エラー
できません。

これは私が何をすべきかのexempleです:

class Choice implements ISdkLog { 

    public Choice() { 
    com.android.sdklib.internal.avd.AvdManager avdmanager; 
    try { 
     com.android.sdklib.SdkManager manager = com.android.sdklib.SdkManager.createManager("Boulet", this); 
     IAndroidTarget[] targets = manager.getTargets(); 

     avdmanager= new com.android.sdklib.internal.avd.AvdManager(manager,this); 

     avdmanager.createAvd(new java.io.File("filename"), "dunno", targets[0], "dunno", "dunno", "dunno", null, false, false, false, this); 

    } catch (AndroidLocationException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    } 
//Method of interface ISdkLog 
@Override 
public void error(Throwable arg0, String arg1, Object... arg2) { 
    // TODO Auto-generated method stub 
    System.out.println("Error"); 
    System.out.println(arg1); 
    System.out.println(arg0); 
} 

@Override 
public void printf(String arg0, Object... arg1) { 
    // TODO Auto-generated method stub 
    System.out.println("Log"); 
    System.out.println(arg0); 
} 

@Override 
public void warning(String arg0, Object... arg1) { 
    // TODO Auto-generated method stub 
    System.out.println("Warning"); 
    System.out.println(arg0); 
} 
} 
+1

私はシンプルなコマンドラインの呼び出しは簡単だと思いますよね?あなたはコマンドラインから新しいavdを作成することができるので:) – WarrenFaith

+0

合意された、文書化されたコマンドラインインターフェイスを使用してください。 – CommonsWare

+0

新しいバージョンのAndroidツールにおけるコマンドラインの問題は、ユーザー入力を待つことです(--forceパラメータを使用しても)。したがって、Runtime.getRuntime()。execコマンドが停止しています。 – Kowlown

答えて

1

このエラーがplateformが使用しなければならないシステム・イメージに関連しています。 これでウィンドウ上に自分のavdを作成することができました。

AvdManager avdmanager; 
try { 
    SdkManager manager = SdkManager.createManager("path/to/android/sdk/folder", this); 
    IAndroidTarget[] targets = manager.getTargets(); 

    avdmanager= new AvdManager(manager,this); 

    avdmanager.createAvd(new File("custom/path/for/your/avd","advname"), "advname", targets[0], target[0].getSystemImages()[0].getAbiType(), null, null, null, 
      false, false, false, this); 

} catch (AndroidLocationException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

nullパラメータは、スキン、sdcardパス、エミュレータパラメータ(スクリーンパラメータなど)のオプションです。

+0

SdkManagerはどのライブラリに含まれていますか? – droidev

+1

かなり古いので、このコードはもう最新ではないかもしれません。クラスはsdk \ tools \ lib \ sdklib.jarにあります。 – Kowlown