sourceSets.main.java.srcDirs = [ "src/" ] sourceCompatibility = '1.7' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' robovm { iosSignIdentity = "iPhone Distribution: CZ.NIC, z.s.p.o. (NQZA4DGKTW)" iosSkipSigning = false } ext { mainClassName = "cz.nic.tablexia.IOSLauncher" } // Updates or create a robovm.properties file. def updateRoboVMProperties(String buildType, String applicationId, String iconName) { Properties props = new Properties() def propsFile = file('robovm.properties') if (!propsFile.exists()) { propsFile.createNewFile(); } props.load(propsFile.newDataInputStream()) props.setProperty('app.name', appName) props.setProperty('app.icon', iconName) props.setProperty('app.id', applicationId) props.setProperty('app.mainclass', mainClassName) props.setProperty('app.version', tablexiaVersionName) props.setProperty('app.buildtype', buildType) props.setProperty('app.build', '' + tablexiaVersionCode) props.setProperty('app.executable', appName + '-' + buildType + '-' + tablexiaVersionName) props.store(propsFile.newDataOutputStream(), '') } // Extracts native libs (*.a) from the native-ios.jar and places them // under build/libs/ios/. task copyNatives << { file("build/libs/ios/").mkdirs(); configurations.natives.files.each { jar -> def outputDir = null if (jar.name.endsWith("natives-ios.jar")) outputDir = file("build/libs/ios") if (outputDir != null) { copy { from zipTree(jar) into outputDir include "*.a" } } } } // Updates a robovm.xml file. task updateRoboVMXML << { def xml = file('robovm.xml') if (!xml.exists()) { return } // Find all native (*.a) libraries beneath libs def libtree = fileTree(dir: 'build/libs', include: '**/*.a') def config = new groovy.util.XmlParser().parse(xml) config.libs.each {libs -> libs.children().clear() libtree.each { File file -> libs.appendNode('lib', 'build/libs/ios/' + file.getName()) } } def writer = new FileWriter(xml) def printer = new XmlNodePrinter(new PrintWriter(writer)) printer.setPreserveWhitespace true printer.print(config) } tasks.create(name: "createDebugIPA", type: org.robovm.gradle.tasks.CreateIPATask) { doFirst { robovm.iosProvisioningProfile = "Tablexia Debug Provisioning" updateRoboVMProperties("debug", applicationIdDebug, 'Icon_debug') } } tasks.create(name: "createReleaseIPA", type: org.robovm.gradle.tasks.CreateIPATask) { doFirst { robovm.iosProvisioningProfile = "Tablexia Release Provisioning" updateRoboVMProperties("release", applicationIdRelease, 'Icon_release') } } task createIPAFiles() { dependsOn createDebugIPA dependsOn createReleaseIPA } updateRoboVMXML.dependsOn copyNatives build.dependsOn createDebugIPA build.dependsOn createReleaseIPA tasks.eclipse.dependsOn updateRoboVMXML launchIPhoneSimulator.dependsOn build launchIPadSimulator.dependsOn build launchIOSDevice.dependsOn build createIPA.dependsOn build createDebugIPA.dependsOn updateRoboVMXML createReleaseIPA.dependsOn updateRoboVMXML eclipse.project { name = appName + "-ios" natures 'org.robovm.eclipse.RoboVMNature' }