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

如何在Python中调用Android平台的JNI .so库?

解决Windows下Python加载Android .so库的WinError193问题

错误原因

你遇到的OSError: [WinError 193] %1 is not an application Win32,本质是Android的.so库是给ARM架构设备编译的ELF格式文件,而Windows系统用的是x86/x64架构的PE格式库,两者架构和文件格式完全不兼容,Windows的Python根本没法直接加载这种库。


解决方案

方案1:在Android环境中调用(最靠谱)

既然这个.so是给Android做的,直接在Android设备/模拟器里运行Python调用是最直接的:

    1. 给Android装Python环境:用Termux(Android终端工具),执行pkg install python完成安装。
    1. 把adlemx.so放到Termux能访问的路径,比如~/libs/(如果要放系统库目录需要root权限)。
    1. 推荐用pyjnius库直接调用Java类,比ctypes适配JNI更简单:
    from jnius import autoclass
    
    # 加载Android端的x2.X类
    X = autoclass('x2.X')
    # 调用m0do方法
    result = X.m0do("测试字符串")
    print(result)
    
    如果非要用ctypes,得注意JNI的函数名是经过修饰的,真实函数名是Java_x2_X_x01,还要手动处理JNI字符串的转换(需要调用JNIEnv的API,步骤繁琐,不推荐)。

方案2:把库交叉编译成Windows的.dll文件

如果你有这个.so的源码,可以把它编译成Windows能识别的.dll:

  • 用Android NDK或者MinGW这类交叉编译工具,针对x86/x64 Windows架构重新编译源码,生成.dll文件。
  • 编译完成后,直接用你原来的Python代码加载.dll就行(把adlemx.so换成adlemx.dll)。

方案3:用WSL + QEMU模拟ARM环境

在Windows的WSL(Linux子系统)里,通过QEMU模拟ARM架构来运行库:

    1. 在WSL里安装依赖:
    sudo apt install qemu-user-static
    sudo apt install python3:armhf
    
    1. 把adlemx.so放到WSL的路径里,用ARM版本的Python加载库,同样要注意JNI的函数名修饰问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:15:34