Upgrading the SDK
Version 29.x Upgrade​
This document is for developers who have previously integrated v27.x or v28.x of the Skillz SDK. To integrate for the first time, please follow the standard instructions.
- Unity
- iOS
- Android
Before You Upgrade​
The Skillz SDK now supports an Android sdkTargetVersion of 33. This requires a Gradle and JDK update for Unity versions < 2022.3.
Due to Android being built with Android SDK 30+, your app will ask for permissions at runtime, rather than at install time. Unity typically operates by asking for all possible permissions on the first launch of your app, and this can be overwhelming/off-putting to your users. Refer to these instructions on how to prompt for only necessary permissions at runtime.
Instructions​
As a best practice back up your existing project prior to upgrading. The upgrade steps require you to delete existing files and directories.
Delete the Assets/Skillz folder in Unity​
Make sure to save any custom code you wrote in these Skillz files for safe keeping. In your Unity project, delete the Assets/Skillz/
folder in your Unity project.
Delete the Assets/ExternalDependencyManager folder in Unity​
The Google Play Services Resolver has been renamed to the External Dependency Manager for Unity (EDM4U). If you have a PlayServicesResolver and/or ExternalDependencyManager directory in your project you should delete this directory before upgrading and installing the Skillz SDK Unity package.
Import the New Unity Package​
With your Unity project open, double-click on the Unity package, skillz_unity-{version}.unitypackage
, found inside the downloaded SDK archive. A dialog will pop up with a list of files to import. Make sure all files are checked and click "OK".
Disable Registry Addition​
Skillz bundles a plugin by Google called the External Dependency Manager (EDM4U), which is used to resolve Android dependencies. On import of the Skillz SDK, EDM will display a dialog, similar to the screenshot below, to ask if you would like to add additional Unity Package Manager registries. Click the "Disable Registry Addition" button to dismiss the dialog.
Configure iOS Resolver Settings​
Enter the External Dependency Manager's iOS Resolver settings by clicking `Assets > External Dependency Manager > iOS Resolver > Settings. Verify the settings are set like this:
Install CocoaPods​
The External Dependency Manager can install CocoaPods for you, if it is not already installed:
- Select
Assets > External Dependency Manager > iOS Resolver > Install Cocoapods
- Click
OK
in the pop-up confirming installation was successful.
Update Skillz Manager Extra Logic Scripts​
If the Skillz Manager
has been added to your project before upgrade, and the extra logic scripts are used, a small change is needed to the parameters of one of the extra logic script methods.
Previous OnMatchWillBegin
method:
// ...
public class SkillzExampleManagerLogic : MonoBehaviour
{
public void OnMatchWillBeginLogic()
{
Debug.Log("Loading Game Scene");
}
...
New OnMatchWillBegin
method:
// ...
public class SkillzExampleManagerLogic : MonoBehaviour
{
public void OnMatchWillBeginLogic(SkillzSDK.Match match)
{
Debug.Log("Loading Game Scene");
}
...
Add Skillz Manager​
The legacy SkillzMatchDelegate
flow is still valid, the new Skillz Manager
can also be used for this purpose. Instructions on how to update this are below:
First, Please replace your call to SkillzCrossPlatform.LaunchSkillz(SkillzMatchDelegate delegate)
with SkillzCrossPlatform.LaunchSkillz()
.
A Skillz Manager
needs to be added to your start menu scene.
Right click in the
Heirarchy
and selectCreate Empty
. In the inspector, clickAdd Component
then add theSkillz Manager
component.Open the Skillz Manager in the Inspector.
Choose a
Game Scene
,Start Menu Scene
, and optionally aProgression Room Scene
for the scene fields.
If your project uses unsupported Unity version 2019 or lower the Skillz Manager
will not display correctly. Solution Here.
- For additional logic you may add a script to the
Skillz Manager
by selectingAdd Component
, then selecting a custom script. The script must be on the same gameObject as theSkillz Manager
.
Methods from this script can then be called by pressing the +
button under the On Match Will Begin
, On Skillz Will Exit
, and On Progression Room Enter
, then selecting public methods from the added script.
An example extra logic script:
// ...
public class SkillzExampleManagerLogic : MonoBehaviour
{
public void OnMatchWillBeginLogic(SkillzSDK.Match match)
{
Debug.Log("Loading Game Scene");
}
public void OnSkillzWillExitLogic()
{
Debug.Log("Loading Start Menu Scene");
}
public void OnProgressionRoomEnterLogic()
{
Debug.Log("Loading Progression Room Scene");
}
}
// ...
Test Your Game's Workflow​
Test your game's workflow with Skillz using the SDK's SIDEkick feature.
Build Your Game​
Follow the instructions on how to export and build your game for iOS or Android.
Versions 29.2.0+ of the SDK require Gradle 7.4+ and JDK 11. You can find instruction on how to update at the link above.
Instructions​
Re-Add Skillz.framework​
Please download the newest Skillz.framework
along with the GeoComplySDK.xcframework
, GeoComplySDK280.xcframework
, and GCSDKDomain.xcframework
from the Skillz Developer Console. Next, remove the older version of Skillz.framework
from your project. Now, add the Skillz.framework
, GeoComplySDK.xcframework
, GeoComplySDK280.xcframework
, and GCSDKDomain.xcframework
files that were downloaded to your Xcode project. Refer to this article for more information.
Update the Deployment Target​
Now, update the deployment target to iOS 12.0.
Instructions​
1. Add Required Maven Repositories​
The Skillz Android SDK and its dependencies reside in the Skillz maven repository. In the module-level build.gradle
file (it can be found in the src folder where your game resides, not at the top level), you will need to add this maven repository so that it can later add the Skillz SDK to your project.
On Android Studio in the Android view on the Project panel, there are two build.gradle
files: one labeled Project and one labeled Module. Make sure the one labeled Module is selected:
Add the Skillz repository URL:
android {
repositories {
// The Google Maven repository must be listed first
google()
maven {
url 'https://nexus.skillz.com/content/groups/public/'
}
maven {
url "https://maven.singular.net/"
}
maven {
url 'https://jitpack.io/'
}
}
}
Add a Skillz SDK Dependency​
In your build.gradle
file, update your Skillz dependency to the latest SDK version. For example:
android {
dependencies {
implementation 'com.skillz.sdk:skillz-sdk-android:29.2.22'
}
}
Reference Gradle 7.4+​
Gradle version 7.4 and above is required. As such, you will need to modify our build.gradle
file to reference v7.3.0 (or above) of the Gradle plugin. It usually resides in the buildscript
section:
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
}
}
Refer to the official documentation to see which version of the plugin to reference for a different version of Gradle.
Change minSdkVersion, targetSdkVersion, and compileSdkVersion​
You will need to modify your build.gradle
file so that the minSdkVersion
is 24, targetSdkVersion
is set to 33, and compileSdkVersion
is set to 33:
android {
compileSdkVersion 33
defaultConfig {
minSdkVersion 24
targetSdkVersion 33
}
}
Update multidex-keep.txt​
The Skillz SDK needs a few classes to end up in your APK's main DEX file upon compilation. Modify build.gradle
to reference a file called multidex-keep.txt
inside the defaultConfig
subsection for the android
section.
android {
defaultConfig {
multiDexKeepProguard file('multidex-keep.txt')
}
}
Now, update the multidex-keep.txt
in your Android Studio project with the contents below:
-keep class com.google.firebase.crashlytics.** { *; }
-keep class timber.log.** { *; }
-keep class com.facebook.FacebookSdk
-keep class com.path.android.jobqueue.JobManager
Enable AndroidX and R8​
The Skillz SDK depends on the AndroidX Support Libraries instead of the original Android Support Libraries. Additionally, R8 has replaced Proguard as the standard tool for code shrinking, desugaring, and obfuscation.
In your project, add the lines below to the gradle.properties
file; create one if it does not exist. These will tell Android Studio to automatically migrate dependencies from any original Support Libraries to their AndroidX equivalents, and enable R8.
android.useAndroidX=true
android.enableJetifier=true
android.enableR8=true
Update Proguard rules​
Skillz is now obfuscated and requires updated Proguard rules to prevent it from being re-obfuscated and shrunken. Otherwise, this will cause crashes and other problems at runtime. In your build.gradle
, make sure minifyEnabled
and shrinkResources
are both set to false. Additionally, specify 'proguard-rules.pro'
as your Proguard file.
android {
buildTypes {
debug {
jniDebuggable true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Next, add the snippet below in your Proguard file:
# The Skillz Android SDK is already obfuscated, prevent it
# from being obfuscated again if minifyEnabled true
-dontobfuscate
# Prevent the Skillz SDK from being minified if minifyEnabled true
-dontshrink
-keep class bitter.jnibridge.* { *; }
-keep class com.unity3d.player.* { *; }
-keep class org.fmod.* { *; }
-keep public class com.dylanvann.fastimage.* { *; }
-keep public class com.dylanvann.fastimage.** { *; }
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class retrofit.** {*;}
-keep class com.facebook.** {*;}
-keep class com.amazonaws.** {*;}
Next Steps​
If you encounter any problems, please contact us with a detailed description of the issue you are encountering.