public static void main(String[] args) throws ParserConfigurationException, SAXException,
            IOException, NoSuchAlgorithmException {
        boolean releaseMode = false;
        if (args != null)
        {
            for (String arg : args) {
                if (arg.equals("release"))
                    releaseMode = true;
            }
        }
        if (releaseMode)
            System.out.println("Starting verification of RELEASE mode!");
        // will verify that the project at the current working folder is valid
        // tests:
        // 1) package name is valid
        // 1.1) in AndroidManifest.xml
        // 1.2) in any source file
        // 2) any declared pack XML is valid
        // 2.1) pack ID is unique and valid

        final File currentFolder = new File(System.getProperty("user.dir"));

        final PackDetails packDetails = verifyAndroidManifestAndGetPackageName(currentFolder);
        System.out.println("Package name is " + packDetails.PackageName);

        verifyStringsFileIsValid(currentFolder, packDetails);
        
        verifyAntBuildFile(currentFolder, packDetails);

        verifySourceCodeHasCorrectPackageName(currentFolder, packDetails);

        if (packDetails.KeyboardSourceCodeFile != null)
            verifyKeyboardDeclaration(currentFolder, packDetails);

        if (packDetails.DictionarySourceCodeFile != null)
            verifyDictionaryDeclaration(currentFolder, packDetails);

        if (packDetails.ThemeSourceCodeFile != null)
            verifyThemeDeclaration(currentFolder, packDetails);
        
        //checking app icons have been changed
        verifyFileCheckSumHasChanged(new File(currentFolder, "/res/drawable/app_icon.png"), true, "0e71ddf43d0147f7cacc7e1d154cb2f2a031d804", releaseMode);
        verifyFileCheckSumHasChanged(new File(currentFolder, "/res/drawable-hdpi/app_icon.png"), false, "ea1f28b777177aae01fb0f717c4c04c0f72cac71", releaseMode);
        verifyFileCheckSumHasChanged(new File(currentFolder, "/res/drawable-xhdpi/app_icon.png"), false, "862166a2f482b0a9422dc4ed8b293f93b04d6e20", releaseMode);
        verifyFileCheckSumHasChanged(new File(currentFolder, "/StoreStuff/landscape.png"), true, "0b39e1c3824515ff2f406bd1ad811774306cdfe4", releaseMode);
        verifyFileCheckSumHasChanged(new File(currentFolder, "/StoreStuff/portrait.png"), true, "cd995002d2ea98b16d1e1a1b981b0dadd996c6a6", releaseMode);
        verifyFileCheckSumHasChanged(new File(currentFolder, "/StoreStuff/store_hi_res_icon.png"), true, "83d31f26cd4bb3dc719aaa739a82ab6fc5af1b82", releaseMode);
    }