1

私はこのようなことを試しました:

public boolean createTestProject(String projectName, IProject testedProject, int apiLevel){
        NewProjectWizardState mValues = new NewProjectWizardState(Mode.TEST);
        mValues.projectName = projectName;
        if(testedProject != null){
            mValues.testedProject = testedProject;
            mValues.testingSelf = false;
            mValues.useExisting = false;
        }
        else{
            mValues.testingSelf = true;
            mValues.useExisting = false;
        }
        mValues.minSdk = "1.5";
        mValues.minSdkModifiedByUser = true;
        mValues.useDefaultLocation = true;
        mValues.projectLocationModifiedByUser = false;
        mValues.createActivity = false;
        mValues.activityName = "sf";
        mValues.applicationName = "sf";
        mValues.packageName = "sf";
        NewProjectCreator creator = new NewProjectCreator(mValues, getContainer());

        return creator.createAndroidProjects();
    }

しかし、com.android.ide.eclipse.adt.internal.wizards.newproject.NewProjectCreator.createEclipseProject(NewProjectCreator.java:561) で NullPointerException をスローします。そのファイル (おそらく古いバージョン) を確認しましたが、この行は空です。私は何か見落としてますか?

編集:わかりました、私はそれを解決しました。私はいくつかのことを逃しました。今では動作しており、Android プロジェクトを作成することもできます (テストではありません):

public IProject createProject(String projectName, IProject testedProject,
    boolean testMode, int apiLevel, IWizardContainer container,
    Type type, String packName) throws Exception {
    NewProjectWizardState mValues;
    if (testMode) {
        mValues = new NewProjectWizardState(Mode.TEST);
    } else {
        mValues = new NewProjectWizardState(Mode.ANY);
    }
    mValues.projectName = projectName;
    mValues.projectNameModifiedByUser = true;
    mValues.applicationName = capitalize(mValues.projectName);
    mValues.testApplicationName = projectName;
    mValues.createActivity = false;
    mValues.testedProject = testedProject;
    mValues.minSdk = apiLevel;
    mValues.updateSdkTargetToMatchMinSdkVersion();
    String value = Platform.getLocation().append(mValues.projectName)
            .toString();
    value = TextProcessor.process(value);
    mValues.projectLocation = new File(value);
    mValues.packageName = "com.example.android.apis.test";
    if (testedProject != null) {
        mValues.testProjectName = projectName;
        mValues.packageName = String.format("%1$s.test",
            Helper.getPackageName(testedProject));
        mValues.createPairProject = false;
        mValues.testTargetPackageName = Helper
            .getPackageName(testedProject);
    }
    if (testedProject == null && testMode) {
        mValues.createPairProject = false;
        mValues.testProjectName = projectName;
        mValues.testTargetPackageName = "com.example.android.apis";
    }
    if (packName != null && packName.length > 0) {
        mValues.packageName = packName;
    }
    NewProjectCreator creator = new NewProjectCreator(mValues,
            container);

    creator.createAndroidProjects();
    return ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
}
4

0 に答える 0