diff --git a/.vsts-ci.Windows.yml b/.vsts-ci.Windows.yml
index c4246f36..0bb13cc3 100644
--- a/.vsts-ci.Windows.yml
+++ b/.vsts-ci.Windows.yml
@@ -32,4 +32,4 @@ jobs:
inputs:
pathToPublish: $(build.artifactstagingdirectory)
artifactType: container
- artifactName: UnoBanner
+ artifactName: Calculator
diff --git a/.vsts-ci.iOS.yml b/.vsts-ci.iOS.yml
new file mode 100644
index 00000000..51f6d4aa
--- /dev/null
+++ b/.vsts-ci.iOS.yml
@@ -0,0 +1,75 @@
+jobs:
+- job: iOS
+
+ pool:
+ vmImage: 'macOS-10.14'
+
+ variables:
+ NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget
+
+ steps:
+ - checkout: self
+ clean: true
+
+ - bash: /bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
+ displayName: Select Xamarin Version
+
+ - bash: |
+ shopt -s nullglob
+ function join_by { local IFS="$1"; shift; echo "$*"; }
+ lib_path=$(join_by ';' $(Agent.WorkFolder)/_tasks/GitVersion*/4.0.*/lib/osx)
+ echo LD_LIBRARY_PATH: $lib_path
+ echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$lib_path"
+ displayName: Update LD_LIBRARY_PATH for GitVersion
+
+ - task: GitVersion@4
+ inputs:
+ updateAssemblyInfo: false
+
+ - task: InstallAppleCertificate@2
+ displayName: 'Install an Apple certificate'
+ inputs:
+ certSecureFile: 'nventive-appstore-prod-20190521.p12'
+ certPwd: '$(iOSSigning.CertificatePwd)'
+ signingIdentity: '$(iOSSigning.CertificateIdentity)'
+
+ - task: InstallAppleProvisioningProfile@1
+ displayName: 'Install an Apple provisioning profile'
+ inputs:
+ provProfileSecureFile: 'Uno_Calculator.mobileprovision'
+
+ - bash: |
+ cd $(build.sourcesdirectory)/src/CalcManager
+ chmod +x build_ios.sh
+ ./build_ios.sh
+
+ displayName: Build native CalcManager
+
+ - task: MSBuild@1
+ inputs:
+ solution: '$(build.sourcesdirectory)/src/Calculator.iOS/Calculator.iOS.csproj'
+ msbuildLocationMethod: version
+ msbuildVersion: latest
+ msbuildArchitecture: x86
+ msbuildArguments: /r /p:Configuration=Release /p:Platform=iPhone /detailedsummary /m:16 /nr:false "/p:InformationalVersion=%GITVERSION_InformationalVersion%"
+ clean: false
+ maximumCpuCount: true
+ restoreNugetPackages: false
+ logProjectEvents: true
+ createLogFile: true
+
+ - task: CopyFiles@2
+ displayName: 'Publish iOS Binaries'
+ inputs:
+ SourceFolder: $(build.sourcesdirectory)/src/Calculator.iOS/bin/iPhone/Release
+ Contents: '*.ipa'
+ TargetFolder: $(build.artifactstagingdirectory)
+ CleanTargetFolder: false
+ OverWrite: false
+ flattenFolders: false
+
+ - task: PublishBuildArtifacts@1
+ inputs:
+ PathtoPublish: $(build.artifactstagingdirectory)
+ ArtifactName: Uno-Calculator-iOS
+ ArtifactType: Container
diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index 8a41e23e..32caa33e 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -6,3 +6,4 @@ resources:
jobs:
- template: .vsts-ci.Windows.yml
- template: .vsts-ci.Linux.yml
+- template: .vsts-ci.iOS.yml
diff --git a/src/CalcManager/build_ios.sh b/src/CalcManager/build_ios.sh
index 6dc4cf04..889f516f 100755
--- a/src/CalcManager/build_ios.sh
+++ b/src/CalcManager/build_ios.sh
@@ -1,6 +1,9 @@
+#!/bin/bash
+
xcrun -sdk iphoneos clang \
-x c++ \
-arch arm64 \
+ -miphoneos-version-min=10.0 \
-std=c++1z \
-stdlib=libc++ \
-c \
diff --git a/src/Calculator.iOS/Calculator.iOS.csproj b/src/Calculator.iOS/Calculator.iOS.csproj
index 209ef912..e26c8d7b 100644
--- a/src/Calculator.iOS/Calculator.iOS.csproj
+++ b/src/Calculator.iOS/Calculator.iOS.csproj
@@ -26,6 +26,13 @@
None
true
-gcc_flags "-lc++ -lstdc++"
+
+
+ iPhone Developer
+
+
+
+
portable
@@ -37,6 +44,11 @@
x86_64
false
-gcc_flags "-lc++ -lstdc++"
+ iPhone Distribution
+
+
+
+
true
@@ -52,6 +64,7 @@
iPhone Developer
true
-gcc_flags "-lc++ -lstdc++"
+ true
none
@@ -59,11 +72,18 @@
bin\iPhone\Release
prompt
4
- Entitlements.plist
+
+
ARM64
false
- iPhone Developer
- -gcc_flags "-lc++ -lstdc++"
+ -gcc_flags "-lc++ -lstdc++" --setenv=MONO_GC_PARAMS=soft-heap-limit=512m,nursery-size=64m,evacuation-threshold=66,major=marksweep,concurrent-sweep
+ Uno Calculator
+ iPhone Distribution
+
+
+ true
+ true
+ true
none
@@ -90,6 +110,9 @@
Automatic:AppStore
iPhone Distribution
+
+
+
@@ -105,7 +128,36 @@
-
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
@@ -123,4 +175,4 @@
-
\ No newline at end of file
+
diff --git a/src/Calculator.iOS/Info.plist b/src/Calculator.iOS/Info.plist
index 3d4e5835..b8010540 100644
--- a/src/Calculator.iOS/Info.plist
+++ b/src/Calculator.iOS/Info.plist
@@ -1,11 +1,11 @@
-
+
CFBundleDisplayName
- UnoQuickStart.iOS
+ Uno Calculator
CFBundleIdentifier
- com.companyname.WindowsCalculator
+ uno.platform.calculator
CFBundleShortVersionString
1.0
CFBundleVersion
@@ -13,7 +13,7 @@
LSRequiresIPhoneOS
MinimumOSVersion
- 9.0
+ 10.0
UIDeviceFamily
1
@@ -38,10 +38,12 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- UIAppFonts
-
- Fonts/winjs-symbols.ttf
- Fonts/CalcMDL2.ttf
-
+ UIAppFonts
+
+ Fonts/winjs-symbols.ttf
+ Fonts/CalcMDL2.ttf
+
+ UIRequiresFullScreen
+
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/Contents.json b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/Contents.json
new file mode 100644
index 00000000..8292de75
--- /dev/null
+++ b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/Contents.json
@@ -0,0 +1,106 @@
+{
+ "images": [
+ {
+ "scale": "2x",
+ "size": "29x29",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "3x",
+ "size": "29x29",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "2x",
+ "size": "40x40",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "3x",
+ "size": "60x60",
+ "idiom": "iphone"
+ },
+ {
+ "scale": "1x",
+ "size": "20x20",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "2x",
+ "size": "20x20",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "1x",
+ "size": "29x29",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "2x",
+ "size": "29x29",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "1x",
+ "size": "40x40",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "2x",
+ "size": "40x40",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "1x",
+ "size": "76x76",
+ "idiom": "ipad"
+ },
+ {
+ "scale": "2x",
+ "size": "20x20",
+ "idiom": "iphone",
+ "filename": "iPhone-20x20@2x.png"
+ },
+ {
+ "scale": "3x",
+ "size": "20x20",
+ "idiom": "iphone",
+ "filename": "iPhone-20x20@3x.png"
+ },
+ {
+ "scale": "3x",
+ "size": "40x40",
+ "idiom": "iphone",
+ "filename": "iPhone-40x40@3x.png"
+ },
+ {
+ "scale": "2x",
+ "size": "60x60",
+ "idiom": "iphone",
+ "filename": "iPhone-60x60@2x.png"
+ },
+ {
+ "scale": "2x",
+ "size": "76x76",
+ "idiom": "ipad",
+ "filename": "iPad-76x76@2x.png squaretile-sdk-ipad.png"
+ },
+ {
+ "scale": "2x",
+ "size": "83.5x83.5",
+ "idiom": "ipad",
+ "filename": "iPad-84x84@2x.png"
+ },
+ {
+ "scale": "1x",
+ "size": "1024x1024",
+ "idiom": "ios-marketing",
+ "filename": "ios-marketing-1024x1024@1x.png"
+ }
+ ],
+ "properties": {},
+ "info": {
+ "version": 1,
+ "author": "xcode"
+ }
+}
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png
new file mode 100644
index 00000000..5b02c03d
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png
new file mode 100644
index 00000000..5f38288d
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png
new file mode 100644
index 00000000..15c895f3
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png
new file mode 100644
index 00000000..7c034c51
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png
new file mode 100644
index 00000000..5835894a
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png
new file mode 100644
index 00000000..5835894a
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png
new file mode 100644
index 00000000..7601500a
Binary files /dev/null and b/src/Calculator.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png differ
diff --git a/src/Calculator.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json b/src/Calculator.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json
new file mode 100644
index 00000000..69555e44
--- /dev/null
+++ b/src/Calculator.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json
@@ -0,0 +1,58 @@
+{
+ "images": [
+ {
+ "orientation": "portrait",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "scale": "2x",
+ "size": "640x960",
+ "idiom": "iphone"
+ },
+ {
+ "orientation": "portrait",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "subtype": "retina4",
+ "scale": "2x",
+ "size": "640x1136",
+ "idiom": "iphone"
+ },
+ {
+ "orientation": "portrait",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "scale": "1x",
+ "size": "768x1024",
+ "idiom": "ipad"
+ },
+ {
+ "orientation": "landscape",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "scale": "1x",
+ "size": "1024x768",
+ "idiom": "ipad"
+ },
+ {
+ "orientation": "portrait",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "scale": "2x",
+ "size": "1536x2048",
+ "idiom": "ipad"
+ },
+ {
+ "orientation": "landscape",
+ "extent": "full-screen",
+ "minimum-system-version": "7.0",
+ "scale": "2x",
+ "size": "2048x1536",
+ "idiom": "ipad"
+ }
+ ],
+ "properties": {},
+ "info": {
+ "version": 1,
+ "author": ""
+ }
+}
\ No newline at end of file