Te damos la bienvenida a nuestra página web, en este lugar hallarás la solucíon que andabas buscando.
Solución:
Estás modificando el mal. AndroidManifest
expediente. Que AndroidManifest
desde
que está modificando es generado por la unidad cada vez que construye su proyecto.
Para usar una costumbre AndroidManifest
archivo, tienes que poner tu personalizado AndroidManifest
archivo en
.
1.Ir a
Copia el AndroidManifest.xml
archivo a su
2.Abra el archivo de manifiesto copiado desde
y agregue su manifiesto.
En su caso particular, agregue
lo. Guardar, construir y ejecutar.
Unity ahora usará eso AndroidManifest
expediente. Si tiene un bloqueo o cualquier otro problema, entonces Unity no quiere que cambie eso.
A partir de Unity 2018, debe implementar el IPostGenerateGradleAndroidProject
interfaz que le permitirá editar el manifiesto de Android después de que Unity lo produzca. En el código a continuación, he agregado métodos para configurar el permiso del micrófono, configurar la aceleración de hardware y configurar el tema de su aplicación (reemplazar SetMicrophonePermission()
a su método preferido, que se llama cuando Unity llama OnPostGenerateGradleAndroidProject()
).
Agregue el siguiente código a Assets/Editor/ModifyUnityAndroidAppManifestSample.cs
using System.IO;
using System.Text;
using System.Xml;
using UnityEditor.Android;
public class ModifyUnityAndroidAppManifestSample : IPostGenerateGradleAndroidProject
public void OnPostGenerateGradleAndroidProject(string basePath)
// If needed, add condition checks on whether you need to run the modification routine.
// For example, specific configuration/app options enabled
var androidManifest = new AndroidManifest(GetManifestPath(basePath));
androidManifest.SetMicrophonePermission();
// Add your XML manipulation routines
androidManifest.Save();
public int callbackOrder get return 1;
private string _manifestFilePath;
private string GetManifestPath(string basePath)
if (string.IsNullOrEmpty(_manifestFilePath))
var pathBuilder = new StringBuilder(basePath);
pathBuilder.Append(Path.DirectorySeparatorChar).Append("src");
pathBuilder.Append(Path.DirectorySeparatorChar).Append("main");
pathBuilder.Append(Path.DirectorySeparatorChar).Append("AndroidManifest.xml");
_manifestFilePath = pathBuilder.ToString();
return _manifestFilePath;
internal class AndroidXmlDocument : XmlDocument
private string m_Path;
protected XmlNamespaceManager nsMgr;
public readonly string AndroidXmlNamespace = "http://schemas.android.com/apk/res/android";
public AndroidXmlDocument(string path)
m_Path = path;
using (var reader = new XmlTextReader(m_Path))
reader.Read();
Load(reader);
nsMgr = new XmlNamespaceManager(NameTable);
nsMgr.AddNamespace("android", AndroidXmlNamespace);
public string Save()
return SaveAs(m_Path);
public string SaveAs(string path)
using (var writer = new XmlTextWriter(path, new UTF8Encoding(false)))
writer.Formatting = Formatting.Indented;
Save(writer);
return path;
internal class AndroidManifest : AndroidXmlDocument
private readonly XmlElement ApplicationElement;
public AndroidManifest(string path) : base(path)
ApplicationElement = SelectSingleNode("/manifest/application") as XmlElement;
private XmlAttribute CreateAndroidAttribute(string key, string value)
XmlAttribute attr = CreateAttribute("android", key, AndroidXmlNamespace);
attr.Value = value;
return attr;
internal XmlNode GetActivityWithLaunchIntent()
return SelectSingleNode("/manifest/application/activity[intent-filter/action/@android:name='android.intent.action.MAIN' and " +
"intent-filter/category/@android:name='android.intent.category.LAUNCHER']", nsMgr);
internal void SetApplicationTheme(string appTheme)
ApplicationElement.Attributes.Append(CreateAndroidAttribute("theme", appTheme));
internal void SetStartingActivityName(string activityName)
GetActivityWithLaunchIntent().Attributes.Append(CreateAndroidAttribute("name", activityName));
internal void SetHardwareAcceleration()
GetActivityWithLaunchIntent().Attributes.Append(CreateAndroidAttribute("hardwareAccelerated", "true"));
internal void SetMicrophonePermission()
var manifest = SelectSingleNode("/manifest");
XmlElement child = CreateElement("uses-permission");
manifest.AppendChild(child);
XmlAttribute newAttribute = CreateAndroidAttribute("name", "android.permission.RECORD_AUDIO");
child.Attributes.Append(newAttribute);
valoraciones y comentarios
Recuerda que tienes concesión de agregar una reseña si te ayudó.