// TODO(b/130759565): add check for PlayerSettings.productName
        public virtual bool Initialize(BuildToolLogger buildToolLogger)
        {
            // See https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
            if (!AndroidArchitectureHelper.UnityVersionSupported)
            {
                buildToolLogger.DisplayErrorDialog(
                    "This version of Unity doesn't support 64 bit libraries, which are required by Google Play."
                    + " Please upgrade Unity to version 2017.4.16 or later.");
                return(false);
            }

            // Try to determine whether this is intended to be a release build.
            if (_apkSigner.UseDebugKeystore() || EditorUserBuildSettings.development)
            {
                // Seems like a debug build, so no need to do release build checks.
                return(true);
            }

            if (!HasIconForTargetGroup(BuildTargetGroup.Unknown) && !HasIconForTargetGroup(BuildTargetGroup.Android))
            {
                buildToolLogger.DisplayErrorDialog(
                    "Failed to locate a Default Icon or an Android Icon for this project. " +
                    "Check Player Settings to set an icon");
                return(false);
            }

            string message;

            switch (AndroidArchitectureHelper.ArchitectureStatus)
            {
            case AndroidArchitectureHelper.Status.Ok:
                return(true);

            case AndroidArchitectureHelper.Status.ArmV7Disabled:
                message = "ARMv7 and " + Arm64RequiredDescription + Il2CppRequiredDescription;
                break;

            case AndroidArchitectureHelper.Status.Il2CppDisabled:
                message = Arm64RequiredDescription + Il2CppRequiredDescription;
                break;

            case AndroidArchitectureHelper.Status.Arm64Disabled:
                message = Arm64RequiredDescription;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            message += "\n\nClick \"OK\" to enable an IL2CPP build for ARMv7 and ARM64 architectures.";
            if (buildToolLogger.DisplayActionableErrorDialog(message))
            {
                AndroidArchitectureHelper.FixTargetArchitectures();
            }

            return(false);
        }
Beispiel #2
0
        // TODO(b/130759565): add check for PlayerSettings.productName
        public virtual bool Initialize(BuildToolLogger buildToolLogger)
        {
            // Try to determine whether this is intended to be a release build.
            if (!_jarSigner.UseCustomKeystore || EditorUserBuildSettings.development)
            {
                // Seems like a debug build, so no need to do release build checks.
                return(true);
            }

            if (!HasIconForTargetGroup(BuildTargetGroup.Unknown) && !HasIconForTargetGroup(BuildTargetGroup.Android))
            {
                buildToolLogger.DisplayErrorDialog(
                    "Failed to locate a Default Icon or an Android Icon for this project. " +
                    "Check Player Settings to set an icon");
                return(false);
            }

            string message;

            switch (AndroidArchitectureHelper.ArchitectureStatus)
            {
            case AndroidArchitectureHelper.Status.Ok:
                return(true);

            case AndroidArchitectureHelper.Status.ArmV7Disabled:
                message = "ARMv7 and " + Arm64RequiredDescription + Il2CppRequiredDescription;
                break;

            case AndroidArchitectureHelper.Status.Il2CppDisabled:
                message = Arm64RequiredDescription + Il2CppRequiredDescription;
                break;

            case AndroidArchitectureHelper.Status.Arm64Disabled:
                message = Arm64RequiredDescription;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            message += "\n\nClick \"OK\" to enable an IL2CPP build for ARMv7 and ARM64 architectures.";
            if (buildToolLogger.DisplayActionableErrorDialog(message))
            {
                AndroidArchitectureHelper.FixTargetArchitectures();
            }

            return(false);
        }
Beispiel #3
0
 public override void Validate()
 {
     foreach (var archName in Value)
     {
         try
         {
             AndroidArchitectureHelper.ParseAsAndroidArchitecture(archName);
         }
         catch (ArgumentOutOfRangeException)
         {
             throw new ArgumentException(
                       $"Failed to parse architecture '{archName}'. Available architectures are:" +
                       GetAllowedValues <AndroidArchitecture>(t => t.AsString()));
         }
     }
 }