{"record":{"id":"0d25dbcce722146e","repo":"xtekky/gpt4free","slug":"android-runtime-present-but-runner-missing-rerun","errorCode":null,"errorMessage":"android runtime present but runner missing; rerun g4f-go to build it","messagePattern":"android runtime present but runner missing; rerun g4f-go to build it","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"g4f-go/runtime_android.go","lineNumber":75,"sourceCode":"\t// Check for Termux's official package name\n\treturn strings.Contains(string(output), \"com.termux\"), nil\n}\n\n// androidPythonHome is the prefix dir of the merged android python layout.\nfunc androidPythonHome(binDir string) string {\n\treturn filepath.Join(binDir, \"python-home\")\n}\n\n// androidPythonExecutable returns the C runner path once the runtime is\n// merged (otherwise an error telling the user to install Termux).\nfunc androidPythonExecutable(binDir string) (string, error) {\n\trunner := filepath.Join(binDir, \"pyandroid\")\n\tif fi, err := os.Stat(runner); err == nil && !fi.IsDir() {\n\t\treturn runner, nil\n\t}\n\tif fi, err := os.Stat(androidPythonHome(binDir)); err == nil && fi.IsDir() {\n\t\t// runtime present but runner not built yet\n\t\treturn \"\", fmt.Errorf(\"android runtime present but runner missing; rerun g4f-go to build it\")\n\t}\n\treturn \"\", nil\n}\n\n// androidPythonExe returns the interpreter path for the android layout\n// (the dlopen target inside the runner).\nfunc androidPythonExe(binDir string) string {\n\treturn filepath.Join(androidPythonHome(binDir), \"lib\", \"libpython3.14.so\")\n}\n\n// buildAndroidRunner compiles pyandroid_runner.c against the downloaded\n// python headers using Termux's clang, then links against libpython.\nfunc buildAndroidRunner(binDir string) error {\n\tif ok, err := IsTermuxInstalled(); err != nil || !ok {\n\t\treturn fmt.Errorf(\"Termux is required to build the python runner (install com.termux and retry)\")\n\t}\n\thome := androidPythonHome(binDir)\n\tlib := filepath.Join(home, \"lib\")","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/xtekky/gpt4free/blob/973504e1770928ed5fb82f43da528f441ad9ddc3/g4f-go/runtime_android.go#L57-L93","documentation":"Error \"android runtime present but runner missing; rerun g4f-go to build it\" thrown in xtekky/gpt4free.","triggerScenarios":"Thrown at g4f-go/runtime_android.go:75 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-run g4f-go so it rebuilds the missing pyandroid runner."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"973504e1770928ed5fb82f43da528f441ad9ddc3","analyzedAt":"2026-08-14T23:45:32.408Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}