以编程方式从Java应用程序创建Android虚拟设备 [英] Create an Android Virtual Device From a Java application Programmatically
问题描述
我想从另一个java应用程序创建我的Android虚拟设备。
我不想使用默认的Android AvdManager,因为你无法设置你想要创建你的AVD的地方,而且它有异国情调的caraters的问题。
I want to create my Android virtual device from another java application. I don't want to use the default Android AvdManager because you can't set where you want to create your AVD and it has problem with exotic caraters.
所以我得到了AvdMagager的sdklib.jar并尝试这样做。
So I get the sdklib.jar of the AvdMagager and try to do this.
但我无法创建AVD,因为我有日志:
错误
无法找到ABI%2 $ s的'%1 $ s'文件复制到AVD文件夹。
But I can't create a AVD because I have the log :
Error
Unable to find a '%1$s' file for ABI %2$s to copy into the AVD folder.
这是我所做的事例:
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。
This error is related to the system image the plateform must use. I could create my avd on windows with this.
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路径,模拟器参数的选项(屏幕参数等等......)。
The null parameters are options for skin, sdcard path, emulator params (screen params,etc...).
这篇关于以编程方式从Java应用程序创建Android虚拟设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!