You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android环境下chromedriver.exe权限错误问题求助(Kivy Buildozer打包应用)

解决Android上ChromeDriver权限及执行问题

核心问题分析

  1. 驱动格式错误:你用的是Windows平台的.exe格式ChromeDriver,Android基于Linux内核,无法执行Windows可执行文件。
  2. 路径权限限制:Android 12的Scoped Storage和SELinux策略限制了外部存储(/storage/emulated/0/)的文件执行权限,即便修改chmod 777也会被系统阻止。
  3. 版本匹配问题:ChromeDriver需与Chrome浏览器版本严格对应(主版本一致,小版本尽量匹配),当前你的Chrome版本是103.0.5060.129,建议使用完全匹配的ChromeDriver版本。

具体解决方案

1. 下载正确的Android版ChromeDriver

  • 下载与你的Chrome版本(103.0.5060.129)匹配的ARM/ARM64架构ChromeDriver(根据设备架构选择)。
  • 解压后去掉.exe后缀,重命名为chromedriver。

2. 将ChromeDriver打包到应用内部

  • 修改buildozer.spec配置文件,把chromedriver加入资源列表,确保打包时放入应用私有目录:
    # 在spec文件的assets配置项中添加
    assets = chromedriver,./path/to/your/chromedriver
    
  • 应用安装后,chromedriver会被放在应用私有文件目录,避开外部存储的权限限制。

3. 修改代码适配Android环境

  • 使用应用内部路径加载驱动,同时添加Android必需的Chrome参数:
    from selenium import webdriver
    import os
    from kivy.app import App
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('headless')
    # Android环境必需参数,解决沙箱和内存限制问题
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_UK'})
    chrome_options.add_experimental_option('androidPackage', 'com.android.chrome')
    
    # 获取应用私有文件目录路径
    driver_path = os.path.join(App.get_running_app().user_data_dir, 'chromedriver')
    # 设置执行权限
    os.chmod(driver_path, 0o755)
    
    driver = webdriver.Chrome(executable_path=driver_path, options=chrome_options)
    

4. 权限设置注意事项

  • 不要尝试修改外部存储文件的执行权限,Android 12的SELinux策略会阻止这类操作。
  • 应用私有目录的文件,应用本身拥有完整的读写执行权限,设置0o755即可满足要求。

内容的提问来源于stack exchange,提问作者Abdel Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:54:20