Return IOS
@ -3,6 +3,7 @@ import com.unciv.build.BuildConfig.coroutinesVersion
|
||||
import com.unciv.build.BuildConfig.gdxVersion
|
||||
import com.unciv.build.BuildConfig.kotlinVersion
|
||||
import com.unciv.build.BuildConfig.ktorVersion
|
||||
import com.unciv.build.BuildConfig.roboVMVersion
|
||||
|
||||
|
||||
// You'll still get kotlin-reflect-1.3.70.jar in your classpath, but will no longer be used
|
||||
@ -25,6 +26,7 @@ buildscript {
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${com.unciv.build.BuildConfig.kotlinVersion}")
|
||||
classpath("com.android.tools.build:gradle:8.2.2")
|
||||
classpath("com.mobidevelop.robovm:robovm-gradle-plugin:2.3.1")
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,6 +113,18 @@ project(":android") {
|
||||
}
|
||||
}
|
||||
|
||||
project(":ios") {
|
||||
apply(plugin = "kotlin")
|
||||
apply(plugin = "robovm")
|
||||
|
||||
dependencies {
|
||||
"implementation"(project(":core"))
|
||||
"implementation"("com.mobidevelop.robovm:robovm-rt:$roboVMVersion")
|
||||
"implementation"("com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion")
|
||||
"implementation"("com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion")
|
||||
"implementation"("com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios")
|
||||
}
|
||||
}
|
||||
|
||||
project(":core") {
|
||||
apply(plugin = "kotlin")
|
||||
|
@ -10,6 +10,7 @@ object BuildConfig {
|
||||
const val gdxVersion = "1.12.1"
|
||||
const val ktorVersion = "2.3.12"
|
||||
const val coroutinesVersion = "1.8.1"
|
||||
const val roboVMVersion = "2.3.1"
|
||||
|
||||
const val identifier = "com.unciv.app"
|
||||
}
|
||||
|
50
ios/Info.plist.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>${app.name}</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${app.executable}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${app.id}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${app.name}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${app.version}</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${app.build}</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>UIStatusBarHidden</key>
|
||||
<true/>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
<string>opengles-2</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIcon</string>
|
||||
</dict>
|
||||
</plist>
|
35
ios/build.gradle.kts
Normal file
@ -0,0 +1,35 @@
|
||||
import com.android.build.gradle.internal.tasks.factory.dependsOn
|
||||
import com.unciv.build.BuildConfig
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java.srcDir("src/")
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
compileTestJava {
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
}
|
||||
|
||||
extra.set("mainClassName", "IOSLauncher")
|
||||
|
||||
tasks {
|
||||
launchIPhoneSimulator.dependsOn(build)
|
||||
launchIPadSimulator.dependsOn(build)
|
||||
launchIOSDevice.dependsOn(build)
|
||||
createIPA.dependsOn(build)
|
||||
}
|
||||
|
||||
robovm {
|
||||
archs = "thumbv7:arm64"
|
||||
}
|
||||
|
||||
eclipse.project {
|
||||
name = "${BuildConfig.appName}-ios"
|
||||
natures("org.robovm.eclipse.RoboVMNature")
|
||||
}
|
BIN
ios/data/Default-1024w-1366h@2x~ipad.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
ios/data/Default-375w-667h@2x.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
ios/data/Default-414w-736h@3x.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
ios/data/Default-568h@2x.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
ios/data/Default.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
ios/data/Default@2x.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
ios/data/Default@2x~ipad.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
ios/data/Default~ipad.png
Normal file
After Width: | Height: | Size: 33 KiB |
116
ios/data/Media.xcassets/AppIcon.appiconset/Contents.json
Normal file
@ -0,0 +1,116 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-notification-icon-20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-notification-icon-20@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-spotlight-settings-icon-29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-spotlight-settings-icon-29@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-spotlight-icon-40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-spotlight-icon-40@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-app-icon-60@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "iphone-app-icon-60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-notifications-icon-20@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-notifications-icon-20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-settings-icon-29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-settings-icon-29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-spotlight-icon-40@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-spotlight-icon-40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-app-icon-76@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-app-icon-76@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "ipad-pro-app-icon-83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "app-store-icon-1024@1x.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 379 B |
After Width: | Height: | Size: 793 B |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 623 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 793 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 793 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.5 KiB |
6
ios/data/Media.xcassets/Contents.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
6
ios/robovm.properties
Normal file
@ -0,0 +1,6 @@
|
||||
app.version=1.0
|
||||
app.id=com.mygdx.game
|
||||
app.mainclass=com.unciv.game.IOSLauncher
|
||||
app.executable=IOSLauncher
|
||||
app.build=1
|
||||
app.name=my-gdx-game
|
47
ios/robovm.xml
Normal file
@ -0,0 +1,47 @@
|
||||
<config>
|
||||
<executableName>${app.executable}</executableName>
|
||||
<mainClass>${app.mainclass}</mainClass>
|
||||
<os>ios</os>
|
||||
<arch>thumbv7</arch>
|
||||
<target>ios</target>
|
||||
<iosInfoPList>Info.plist.xml</iosInfoPList>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>../android/assets</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
<skipPngCrush>true</skipPngCrush>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>data</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<forceLinkClasses>
|
||||
<pattern>com.badlogic.gdx.scenes.scene2d.ui.*</pattern>
|
||||
<pattern>com.badlogic.gdx.graphics.g3d.particles.**</pattern>
|
||||
<pattern>com.android.okhttp.HttpHandler</pattern>
|
||||
<pattern>com.android.okhttp.HttpsHandler</pattern>
|
||||
<pattern>com.android.org.conscrypt.**</pattern>
|
||||
<pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
|
||||
<pattern>com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings</pattern>
|
||||
<pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi</pattern>
|
||||
<pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std</pattern>
|
||||
<pattern>com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi</pattern>
|
||||
<pattern>com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL</pattern>
|
||||
<pattern>org.apache.harmony.security.provider.cert.DRLCertFactory</pattern>
|
||||
<pattern>org.apache.harmony.security.provider.crypto.CryptoProvider</pattern>
|
||||
</forceLinkClasses>
|
||||
<libs>
|
||||
<lib>z</lib>
|
||||
</libs>
|
||||
<frameworks>
|
||||
<framework>UIKit</framework>
|
||||
<framework>OpenGLES</framework>
|
||||
<framework>QuartzCore</framework>
|
||||
<framework>CoreGraphics</framework>
|
||||
<framework>OpenAL</framework>
|
||||
<framework>AudioToolbox</framework>
|
||||
<framework>AVFoundation</framework>
|
||||
</frameworks>
|
||||
</config>
|
21
ios/src/com/unciv/app/IOSLauncher.java
Normal file
@ -0,0 +1,21 @@
|
||||
package com.unciv.app;
|
||||
|
||||
import com.badlogic.gdx.backends.iosrobovm.IOSApplication;
|
||||
import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration;
|
||||
|
||||
import org.robovm.apple.foundation.NSAutoreleasePool;
|
||||
import org.robovm.apple.uikit.UIApplication;
|
||||
|
||||
class IOSLauncher extends IOSApplication.Delegate {
|
||||
@Override
|
||||
protected IOSApplication createApplication() {
|
||||
IOSApplicationConfiguration config = new IOSApplicationConfiguration();
|
||||
return new IOSApplication(new com.unciv.UncivGame(), config);
|
||||
}
|
||||
|
||||
public static void main(String[] argv) {
|
||||
NSAutoreleasePool pool = new NSAutoreleasePool();
|
||||
UIApplication.main(argv, null, IOSLauncher.class);
|
||||
pool.close();
|
||||
}
|
||||
}
|
@ -1 +1 @@
|
||||
include("desktop", "android", "core", "tests", "server")
|
||||
include("desktop", "android", "ios", "core", "tests", "server")
|
||||
|