以编程方式从Java应用程序创建Android虚拟设备

我想从另一个java应用程序创建我的Android虚拟设备。 我不想使用默认的Android AvdManager,因为你无法设置你想要创建你的AVD的位置,并且它有异国情调的caraters的问题。

所以我得到了AvdMagager的sdklib.jar并尝试这样做。

但我无法创建AVD,因为我有日志:
错误
无法找到ABI%2 $ s的’%1 $ s’文件复制到AVD文件夹中。

这是我所做的事例:

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); } } 

此错误与平台必须使用的系统映像有关。 我可以用这个在Windows上创建我的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参数是皮肤,SD卡路径,模拟器参数(屏幕参数等)的选项。