2011-12-22 4 views
1

다른 Java 응용 프로그램에서 Android 가상 장치를 만들고 싶습니다. AVD를 만들려는 위치를 설정할 수 없으며 이국적인 캐러터에 문제가 있기 때문에 기본 Android AvdManager를 사용하고 싶지 않습니다.Java 응용 프로그램에서 Android 가상 장치 만들기 프로그래밍 방식으로

그래서 AvdMagager의 sdklib.jar를 얻고 이것을 시도합니다.

하지만 로그를 가지고 있기 때문에 나는 AVD를 만들 수 없습니다 다음 AVD 폴더에 복사 ABI % 2 $ s의에 '% 1 $ S'파일을 찾을 수
오류
수 없습니다.

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

이 오류는 플랫폼 종속적 사용해야 시스템 이미지와 관련된 :

내가하는 일의 exemple입니다. 이것으로 창에 내 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

관련 문제