Android build errors

Hello, I have this problem when i hit build on the android

  1. Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Runtime\TMP_UpdateManager.cs(134,43): error CS0246: The type or namespace name ‘ScriptableRenderContext’ could not be found (are you missing a using directive or an assembly reference?)

  2. C:\Program Files\Unity\Hub\Editor\2019.1.12f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.timeline\Runtime\Animation\AnimationOutputWeightProcessor.cs(21,16): error CS0122: ‘AnimationMotionXToDeltaPlayable’ is inaccessible due to its protection level

3)C:\Program Files\Unity\Hub\Editor\2019.1.12f1\Editor\Data\Resources\PackageManager\BuiltInPackages\com.unity.timeline\Runtime\Events\Signals\SignalAsset.cs(11,6): error CS0122: ‘AssetFileNameExtensionAttribute’ is inaccessible due to its protection level

Help please!

Code for the first one (cs0246):

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

#if UNITY_2019_1_OR_NEWER
using UnityEngine.Rendering;
#elif UNITY_2018_1_OR_NEWER
using UnityEngine.Experimental.Rendering;
#endif


namespace TMPro
{

    public class TMP_UpdateManager
    {
        private static TMP_UpdateManager s_Instance;

        private readonly List<TMP_Text> m_LayoutRebuildQueue = new List<TMP_Text>();
        private Dictionary<int, int> m_LayoutQueueLookup = new Dictionary<int, int>();

        private readonly List<TMP_Text> m_GraphicRebuildQueue = new List<TMP_Text>();
        private Dictionary<int, int> m_GraphicQueueLookup = new Dictionary<int, int>();

        private readonly List<TMP_Text> m_InternalUpdateQueue = new List<TMP_Text>();
        private Dictionary<int, int> m_InternalUpdateLookup = new Dictionary<int, int>();

        //private bool m_PerformingGraphicRebuild;
        //private bool m_PerformingLayoutRebuild;

        /// <summary>
        /// Get a singleton instance of the registry
        /// </summary>
        public static TMP_UpdateManager instance
        {
            get
            {
                if (TMP_UpdateManager.s_Instance == null)
                    TMP_UpdateManager.s_Instance = new TMP_UpdateManager();
                return TMP_UpdateManager.s_Instance;
            }
        }


        /// <summary>
        /// Register to receive rendering callbacks.
        /// </summary>
        protected TMP_UpdateManager()
        {
            Camera.onPreCull += OnCameraPreCull;

            #if UNITY_2019_1_OR_NEWER
                RenderPipelineManager.beginFrameRendering += OnBeginFrameRendering;
            #elif UNITY_2018_1_OR_NEWER
                RenderPipeline.beginFrameRendering += OnBeginFrameRendering;
            #endif
        }

       
        /// <summary>
        /// Function used as a replacement for LateUpdate() to handle SDF Scale updates and Legacy Animation updates.
        /// </summary>
        /// <param name="textObject"></param>
        internal static void RegisterTextObjectForUpdate(TMP_Text textObject)
        {
            TMP_UpdateManager.instance.InternalRegisterTextObjectForUpdate(textObject);
        }

        private void InternalRegisterTextObjectForUpdate(TMP_Text textObject)
        {
            int id = textObject.GetInstanceID();

            if (this.m_InternalUpdateLookup.ContainsKey(id))
                return;

            m_InternalUpdateLookup[id] = id;
            this.m_InternalUpdateQueue.Add(textObject);

            return;
        }


        /// <summary>
        /// Function to register elements which require a layout rebuild.
        /// </summary>
        /// <param name="element"></param>
        public static void RegisterTextElementForLayoutRebuild(TMP_Text element)
        {
            TMP_UpdateManager.instance.InternalRegisterTextElementForLayoutRebuild(element);
        }

        private bool InternalRegisterTextElementForLayoutRebuild(TMP_Text element)
        {
            int id = element.GetInstanceID();

            if (this.m_LayoutQueueLookup.ContainsKey(id))
                return false;

            m_LayoutQueueLookup[id] = id;
            this.m_LayoutRebuildQueue.Add(element);

            return true;
        }


        /// <summary>
        /// Function to register elements which require a layout rebuild.
        /// </summary>
        /// <param name="element"></param>
        public static void RegisterTextElementForGraphicRebuild(TMP_Text element)
        {
            TMP_UpdateManager.instance.InternalRegisterTextElementForGraphicRebuild(element);
        }

        private bool InternalRegisterTextElementForGraphicRebuild(TMP_Text element)
        {
            int id = element.GetInstanceID();

            if (this.m_GraphicQueueLookup.ContainsKey(id))
                return false;

            m_GraphicQueueLookup[id] = id;
            this.m_GraphicRebuildQueue.Add(element);

            return true;
        }


        /// <summary>
        /// Callback which occurs just before the Scriptable Render Pipeline (SRP) begins rendering.
        /// </summary>
        /// <param name="cameras"></param>
        #if UNITY_2019_1_OR_NEWER
        public void OnBeginFrameRendering(ScriptableRenderContext renderContext, Camera[] cameras)
        #elif UNITY_2018_1_OR_NEWER
        void OnBeginFrameRendering(Camera[] cameras)
        #endif
        {
            // Exclude the PreRenderCamera
            #if UNITY_EDITOR
            if (cameras.Length == 1 && cameras[0].cameraType == CameraType.Preview)
                return;
            #endif
            DoRebuilds();
        }

        /// <summary>
        /// Callback which occurs just before the cam is rendered.
        /// </summary>
        /// <param name="cam"></param>
        void OnCameraPreCull(Camera cam)
        {
            // Exclude the PreRenderCamera
            #if UNITY_EDITOR
            if (cam.cameraType == CameraType.Preview)
                return;
            #endif
            DoRebuilds();
        }
       
        /// <summary>
        /// Process the rebuild requests in the rebuild queues.
        /// </summary>
        void DoRebuilds()
        {
            // Handle text objects the require an update either as a result of scale changes or legacy animation.
            for (int i = 0; i < m_InternalUpdateQueue.Count; i++)
            {
                m_InternalUpdateQueue[i].InternalUpdate();
            }

            // Handle Layout Rebuild Phase
            for (int i = 0; i < m_LayoutRebuildQueue.Count; i++)
            {
                m_LayoutRebuildQueue[i].Rebuild(CanvasUpdate.Prelayout);
            }

            if (m_LayoutRebuildQueue.Count > 0)
            {
                m_LayoutRebuildQueue.Clear();
                m_LayoutQueueLookup.Clear();
            }

            // Handle Graphic Rebuild Phase
            for (int i = 0; i < m_GraphicRebuildQueue.Count; i++)
            {
                m_GraphicRebuildQueue[i].Rebuild(CanvasUpdate.PreRender);
            }

            // If there are no objects in the queue, we don't need to clear the lists again.
            if (m_GraphicRebuildQueue.Count > 0)
            {
                m_GraphicRebuildQueue.Clear();
                m_GraphicQueueLookup.Clear();
            }
        }

        internal static void UnRegisterTextObjectForUpdate(TMP_Text textObject)
        {
            TMP_UpdateManager.instance.InternalUnRegisterTextObjectForUpdate(textObject);
        }

        /// <summary>
        /// Function to unregister elements which no longer require a rebuild.
        /// </summary>
        /// <param name="element"></param>
        public static void UnRegisterTextElementForRebuild(TMP_Text element)
        {
            TMP_UpdateManager.instance.InternalUnRegisterTextElementForGraphicRebuild(element);
            TMP_UpdateManager.instance.InternalUnRegisterTextElementForLayoutRebuild(element);
            TMP_UpdateManager.instance.InternalUnRegisterTextObjectForUpdate(element);
        }

        private void InternalUnRegisterTextElementForGraphicRebuild(TMP_Text element)
        {
            int id = element.GetInstanceID();

            TMP_UpdateManager.instance.m_GraphicRebuildQueue.Remove(element);
            m_GraphicQueueLookup.Remove(id);
        }

        private void InternalUnRegisterTextElementForLayoutRebuild(TMP_Text element)
        {
            int id = element.GetInstanceID();

            TMP_UpdateManager.instance.m_LayoutRebuildQueue.Remove(element);
            m_LayoutQueueLookup.Remove(id);
        }

        private void InternalUnRegisterTextObjectForUpdate(TMP_Text textObject)
        {
            int id = textObject.GetInstanceID();

            TMP_UpdateManager.instance.m_InternalUpdateQueue.Remove(textObject);
            m_InternalUpdateLookup.Remove(id);
        }
    }
}

code for the 2: (3 is kind of the same i think)

using System.Collections.Generic;
using UnityEngine.Animations;
using UnityEngine.Playables;

namespace UnityEngine.Timeline
{
    // Does a post processing of the weights on an animation track to properly normalize
    // the mixer weights so that blending does not bring default poses and subtracks, layers and
    // layer graphs blend correctly
    class AnimationOutputWeightProcessor : ITimelineEvaluateCallback
    {
        struct WeightInfo
        {
            public Playable mixer;
            public Playable parentMixer;
            public int port;
            public bool modulate;
        }

        public AnimationPlayableOutput m_Output;
        public AnimationMotionXToDeltaPlayable m_MotionXPlayable;
        public AnimationMixerPlayable m_PoseMixer;
        public AnimationLayerMixerPlayable m_LayerMixer;
        readonly List<WeightInfo> m_Mixers = new List<WeightInfo>();

        public AnimationOutputWeightProcessor(AnimationPlayableOutput output)
        {
            m_Output = output;
            output.SetWeight(0);
            FindMixers();
        }

        static Playable FindFirstAnimationPlayable(Playable p)
        {
            var currentNode = p;
            while (currentNode.IsValid() && currentNode.GetInputCount() > 0
                   && !currentNode.IsPlayableOfType<AnimationLayerMixerPlayable>()
                   && !currentNode.IsPlayableOfType<AnimationMotionXToDeltaPlayable>()
                   && !currentNode.IsPlayableOfType<AnimationMixerPlayable>())
                currentNode = currentNode.GetInput(0);

            return currentNode;
        }

        void FindMixers()
        {
            m_Mixers.Clear();
            m_PoseMixer = AnimationMixerPlayable.Null;
            m_LayerMixer = AnimationLayerMixerPlayable.Null;
            m_MotionXPlayable = AnimationMotionXToDeltaPlayable.Null;

            var playable = m_Output.GetSourcePlayable();
            var outputPort = m_Output.GetSourceOutputPort();
            if (!playable.IsValid() || outputPort < 0 || outputPort >= playable.GetInputCount())
                return;

            var mixer = FindFirstAnimationPlayable(playable.GetInput(outputPort));

            Playable motionXPlayable = mixer;
            if (motionXPlayable.IsPlayableOfType<AnimationMotionXToDeltaPlayable>())
            {
                m_MotionXPlayable = (AnimationMotionXToDeltaPlayable)motionXPlayable;
                mixer = m_MotionXPlayable.GetInput(0);
            }

            if (mixer.IsValid() && mixer.IsPlayableOfType<AnimationMixerPlayable>())
            {
                m_PoseMixer = (AnimationMixerPlayable)mixer;
                Playable layerMixer = m_PoseMixer.GetInput(0);

                if (layerMixer.IsValid() && layerMixer.IsPlayableOfType<AnimationLayerMixerPlayable>())
                    m_LayerMixer = (AnimationLayerMixerPlayable)layerMixer;
            }
            else if (mixer.IsValid() && mixer.IsPlayableOfType<AnimationLayerMixerPlayable>())
            {
                m_LayerMixer = (AnimationLayerMixerPlayable)mixer;
            }


            if (!m_LayerMixer.IsValid())
                return;

            var count = m_LayerMixer.GetInputCount();
            for (var i = 0; i < count; i++)
            {
                FindMixers(m_LayerMixer, i, m_LayerMixer.GetInput(i));
            }
        }

        // Recursively accumulates mixers.
        void FindMixers(Playable parent, int port, Playable node)
        {
            if (!node.IsValid())
                return;

            var type = node.GetPlayableType();
            if (type == typeof(AnimationMixerPlayable) || type == typeof(AnimationLayerMixerPlayable))
            {
                // use post fix traversal so children come before parents
                int subCount = node.GetInputCount();
                for (int j = 0; j < subCount; j++)
                {
                    FindMixers(node, j, node.GetInput(j));
                }

                // if we encounter a layer mixer, we assume there is nesting occuring
                //  and we modulate the weight instead of overwriting it.
                var weightInfo = new WeightInfo
                {
                    parentMixer = parent,
                    mixer = node,
                    port = port,
                    modulate = (type == typeof(AnimationLayerMixerPlayable))
                };
                m_Mixers.Add(weightInfo);
            }
            else
            {
                var count = node.GetInputCount();
                for (var i = 0; i < count; i++)
                {
                    FindMixers(parent, port, node.GetInput(i));
                }
            }
        }

        public void Evaluate()
        {
            m_Output.SetWeight(1);
            for (int i = 0; i < m_Mixers.Count; i++)
            {
                var mixInfo = m_Mixers[i];
                float weight = mixInfo.modulate ? mixInfo.parentMixer.GetInputWeight(mixInfo.port) : 1.0f;
                mixInfo.parentMixer.SetInputWeight(mixInfo.port, weight * WeightUtility.NormalizeMixer(mixInfo.mixer));
            }

            float normalizedWeight = WeightUtility.NormalizeMixer(m_LayerMixer);

            var animator = m_Output.GetTarget();
            if (animator == null)
                return;

            // AnimationMotionXToDeltaPlayable must blend with default values when previewing tracks with absolute root motion.
            bool blendMotionX = !Application.isPlaying && m_MotionXPlayable.IsValid() && m_MotionXPlayable.IsAbsoluteMotion();

            if (blendMotionX)
            {
                m_PoseMixer.SetInputWeight(0, normalizedWeight);
                m_PoseMixer.SetInputWeight(1, 1.0f - normalizedWeight);
            }
            else
            {
                if (!m_PoseMixer.Equals(AnimationMixerPlayable.Null))
                {
                    m_PoseMixer.SetInputWeight(0, 1.0f);
                    m_PoseMixer.SetInputWeight(1, 0.0f);
                }

                m_Output.SetWeight(normalizedWeight);
            }
        }
    }
}

Are you actually using TextMesh Pro and Timeline? If not, I would suggest going to Package Manager and removing those packages (if Timeline is a package, I don’t recall off-hand).

Not exactly a solution to the problem, but a way to avoid it. :slight_smile: