egametang/ET · error · Exception

clone il2cpp_plus fail. url: {il2cppPlusRepoDir}

Error message

clone il2cpp_plus fail. url: {il2cppPlusRepoDir}

What it means

Thrown by InstallerController.PrepareLibil2cppWithHybridclrFromGitRepo when the il2cpp_plus repository directory is missing after CloneBranch. il2cpp_plus is the patched Unity IL2CPP source that hosts the hybridclr integration; the installer needs both repos to assemble the final libil2cpp.

Source

Thrown at Packages/cn.etetet.hybridclr/Scripts/Editor/Share/Installer/InstallerController.cs:244

            // clone hybridclr
            string hybridclrRepoURL = HybridCLRSettings.Instance.hybridclrRepoURL;
            string hybridclrRepoDir = $"{workDir}/{hybridclr_repo_path}";
            CloneBranch(workDir, hybridclrRepoURL, _curDefaultVersion.hybridclr.branch, hybridclrRepoDir);

            if (!Directory.Exists(hybridclrRepoDir))
            {
                throw new Exception($"clone hybridclr fail. url: {hybridclrRepoURL}");
            }

            // clone il2cpp_plus
            string il2cppPlusRepoURL = HybridCLRSettings.Instance.il2cppPlusRepoURL;
            string il2cppPlusRepoDir = $"{workDir}/{il2cpp_plus_repo_path}";
            CloneBranch(workDir, il2cppPlusRepoURL, _curDefaultVersion.il2cpp_plus.branch, il2cppPlusRepoDir);

            if (!Directory.Exists(il2cppPlusRepoDir))
            {
                throw new Exception($"clone il2cpp_plus fail. url: {il2cppPlusRepoDir}");
            }

            Directory.Move($"{hybridclrRepoDir}/hybridclr", $"{il2cppPlusRepoDir}/libil2cpp/hybridclr");
            return $"{il2cppPlusRepoDir}/libil2cpp";
        }

        public void InstallFromLocal(string libil2cppWithHybridclrSourceDir)
        {
            RunInitLocalIl2CppData(ApplicationIl2cppPath, libil2cppWithHybridclrSourceDir, _curVersion);
        }

        private void RunInitLocalIl2CppData(string editorIl2cppPath, string libil2cppWithHybridclrSourceDir, UnityVersion version)
        {
            if (GetCompatibleType() == CompatibleType.Incompatible)
            {
                Debug.LogError($"Incompatible with current version, minimum compatible version: {GetCurrentUnityVersionMinCompatibleVersionStr()}");
                return;
            }

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. Confirm HybridCLRSettings.il2cppPlusRepoURL is correct and reachable (it must be the il2cpp_plus repo matching your Unity version branch).
  2. Ensure the branch in _curDefaultVersion.il2cpp_plus.branch exists on that remote.
  3. Re-run HybridCLR/Installer after fixing network/credentials; the installer will attempt both clones again.
  4. Use InstallFromLocal if you have a pre-built libil2cpp-with-hybridclr directory to avoid cloning entirely.
Defensive patterns

Strategy: retry

Validate before calling

if (string.IsNullOrEmpty(HybridCLRSettings.Instance.il2cppPlusRepoURL))
    Debug.LogError("il2cppPlusRepoURL is empty in HybridCLR settings.");

Try / catch

try
{
    installer.PrepareLibil2cppWithHybridclrFromGitRepo();
}
catch (Exception ex) when (ex.Message.Contains("clone il2cpp_plus fail"))
{
    // Verify the branch exists on the remote, then retry; or use InstallFromLocal.
}

Prevention

When it happens

Trigger: Same CloneBranch mechanism as error 185 but for il2cppPlusRepoURL. The directory check on il2cppPlusRepoDir fails, indicating the clone of the second repository did not succeed.

Common situations: Same network/auth/PATH causes as 185, plus: the hybridclr repo cloned fine but the il2cpp_plus URL is stale or points to a different host; the branch name configured for il2cpp_plus does not exist on the remote; partial network failure between the two clones.

Related errors


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/625612d900d0aa82. Report an issue: GitHub.