A use-case for extending the custom Unity activity is to pass command-line arguments when you launch the Android Player. For information on the available command-line arguments, refer to Command-line arguments.
To specify startup command-line arguments in custom activity:
String UnityPlayerActivity.updateUnityCommandLineArguments(String cmdLine)
method.cmdLine
argument with your own startup arguments then return the result.
Important: The cmdLine
argument can be an empty string or null so make sure your code handles these possible values.The following example shows how to specify startup arguments to select the graphics API based on the current device:
package com.company.product;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.os.Build;
public class OverrideExample extends UnityPlayerActivity {
private boolean preferVulkan() {
// Use Vulkan on Google Pixel devices
if (Build.MANUFACTURER.equals("Google") && Build.MODEL.startsWith("Pixel"))
return true;
else
return false;
}
private String appendCommandLineArgument(String cmdLine, String arg) {
if (arg == null || arg.isEmpty())
return cmdLine;
else if (cmdLine == null || cmdLine.isEmpty())
return arg;
else
return cmdLine + " " + arg;
}
@Override protected String updateUnityCommandLineArguments(String cmdLine)
{
if (preferVulkan())
return appendCommandLineArgument(cmdLine, "-force-vulkan");
else
return cmdLine; // let Unity pick the Graphics API based on PlayerSettings
}
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
}
Apart from the custom activity, you can specify command-line arguments in the following ways:
adb shell am start -n "<package_name>/<activity_name>" -e unity <command_line_arguments>
The following example shows how to pass -systemallocator
command-line argument to your application.
adb shell am start -n "com.Company.MyGame/com.unity3d.player.UnityPlayerActivity" -e unity -systemallocator