All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.flexmojos.oss.plugin.air.packager.IosPackager Maven / Gradle / Ivy

/**
 * Flexmojos is a set of maven goals to allow maven users to compile, optimize and test Flex SWF, Flex SWC, Air SWF and Air SWC.
 * Copyright (C) 2008-2012  Marvin Froeder 
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package net.flexmojos.oss.plugin.air.packager;

import org.apache.commons.lang.StringUtils;
import org.apache.maven.artifact.Artifact;
import org.codehaus.plexus.component.annotations.Component;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

@Component( role = Packager.class, hint = "ios" )
public class IosPackager extends BasePackager {

    @Override
    public boolean prepare() throws PackagingException {
        File workDir = request.getWorkDir();
        boolean init = !new File(workDir, "lib/aot/bin").exists();
        if(init) {
            super.prepare();
            Artifact adt = request.getArtifact("adt");
            Artifact iosResources = request.getResolver().resolve(adt.getGroupId(), adt.getArtifactId(),
                    adt.getVersion(), "ios", "zip");
            if(iosResources != null) {
                unpackArtifactToLocation(iosResources, workDir);
                // Some files need to manually be made executable.
                makeExecutableIfExists(new File(workDir, "bin/adt"));
                makeExecutableIfExists(new File(workDir, "bin/adt.bat"));
                makeExecutableIfExists(new File(workDir, "bin/adl"));
                makeExecutableIfExists(new File(workDir, "bin/adl.exe"));
                makeExecutableIfExists(new File(workDir, "lib/aot/bin/compile-abc/compile-abc"));
                makeExecutableIfExists(new File(workDir, "lib/aot/bin/compile-abc/compile-abc-64"));
                makeExecutableIfExists(new File(workDir, "lib/aot/bin/ld64/ld64"));
            }
        }
        return init;
    }

    @Override
    public File execute() throws PackagingException {
        File outputFile = new File(request.getBuildDir(), request.getFinalName() +
                ((request.getClassifier() != null) ? "-" + request.getClassifier() : "")  +".ipa");
        request.setOutputFile(outputFile);

        List adtArgs = new ArrayList();
        adtArgs.add("-package");
        /*if(request.getIosPlatformSdk() != null) {
            adtArgs.add("-Xruntime");
            adtArgs.add(request.getIosPlatformSdk().getAbsolutePath());
        }*/
        adtArgs.add("-target");
        adtArgs.add(request.getIosPackagingType());
        adtArgs.add("-provisioning-profile");
        adtArgs.add(request.getIosProvisioningProfile().getAbsolutePath());
        adtArgs.add("-storetype");
        adtArgs.add(request.getStoretype());
        adtArgs.add("-keystore");
        adtArgs.add(request.getStorefile().getAbsolutePath());
        adtArgs.add("-storepass");
        adtArgs.add(request.getStorepass());
        adtArgs.add("-keypass");
        adtArgs.add(request.getStorepass());
        adtArgs.add(request.getOutputFile().getAbsolutePath());
        adtArgs.add(request.getDescriptorFile().getAbsolutePath());
        adtArgs.add(request.getInputFile().getName());
        if(request.getIosPlatformSdk() != null) {
            adtArgs.add("-platformsdk");
            adtArgs.add(request.getIosPlatformSdk().getAbsolutePath());
        }

        runAdt(adtArgs);

        if(!outputFile.exists()) {
            throw new PackagingException("Output file does not exist " + outputFile.getAbsolutePath());
        }

        return outputFile;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy