En este momento estás viendo Unidad: API de Stockfish habilitada Android Error de tiempo de ejecución

 – Unity

Unidad: API de Stockfish habilitada Android Error de tiempo de ejecución – Unity

Unidad: API de Stockfish habilitada Android Error de tiempo de ejecución

– UnityAssets3Free

bienvenido , por aqui Camilo y en esta ocasion os traigo
esta unity pregunta

Estoy tratando de ejecutar el archivo stockfish armv7 (disponible aquí: https://stockfishchess.org/download/) en mi proyecto de Unity usando System.Diagnostics.Process.

Sin embargo, recibo el siguiente mensaje de error (de adb logcat) cuando intento iniciar el proceso:

03-13 17:15:03.114 25020 27066 E Unity   : Win32Exception: ApplicationName="/storage/emulated/0/Android/data/com.DefaultCompany.MyChessGame/files/stockfish.android.armv7.so", CommandLine="", CurrentDirectory='', Native error= mono-io-layer-error (5)
03-13 17:15:03.114 25020 27066 E Unity   :   at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x002dc] in <3df7f9ca50404bbc8bd4e7b954e70293>:0
03-13 17:15:03.114 25020 27066 E Unity   :   at System.Diagnostics.Process.Start () [0x0003a] in <3df7f9ca50404bbc8bd4e7b954e70293>:0
03-13 17:15:03.114 25020 27066 E Unity   :   at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
03-13 17:15:03.114 25020 27066 E Unity   :   at AI.Awake () [0x00076] in C:Program Files (x86)Unity ProjectsMy Chess GameAssetsGameScriptsPlayersAI.cs:62

mi código para el Android La compilación del proyecto Unity se ve así:

        string fileName = Path.Combine(Application.persistentDataPath, "stockfish.android.armv7.so");

        if (!File.Exists(fileName))
        
            string _path = Path.Combine(Application.streamingAssetsPath, "stockfish.android.armv7.so");
            UnityWebRequest request = UnityWebRequest.Get(_path);
            request.SendWebRequest();
            while (!request.isDone)
            
            File.WriteAllBytes(fileName, request.downloadHandler.data);
        
        Debug.Log(fileName);
        Debug.Log(File.Exists(fileName));

        p = new System.Diagnostics.Process();
        p.StartInfo.FileName = fileName;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.CreateNoWindow = true;
        p.Start();

O Debug.Log(File.Exists(fileName)) muestra que el archivo existe. no estoy seguro de qué mono-io-layer-error (5) ¿Está?

Estaría agradecido por cualquier ayuda.

Actualizar

Encontré esta lista de códigos de error de Win32:
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d

A partir de esto, creo que el problema puede ser que se denegó el acceso. En ese caso, tendré que averiguar cómo cambiar el acceso al archivo. ¿Alguien sabe cómo hacer esto en Unity?

0

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,hasta la proxima

Deja una respuesta