Chaquopy Android触发multiprocessing sem_open缺失ImportError
项目开发背景
- 开发的Python应用可在Windows平台正常构建、运行。
- 根据Chaquopy版本说明,
sem_open相关的同步原语缺失问题早在7.0.3版本就已修复,但当前使用9.1.0版本在Android虚拟机上运行时,依然触发对应报错。 - 目前已提供完整的根目录Gradle配置与运行崩溃日志,需要问题排查指导,如有需要可随时补充更多错误信息或logcat输出。
项目根目录Gradle构建配置
顶层构建脚本:
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.4.21" repositories { google() jcenter() maven { url "https://chaquo.com/maven" } } dependencies { classpath 'com.android.tools.build:gradle:4.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.chaquo.python:gradle:9.1.0" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
全局项目配置:
allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
运行崩溃日志
应用在Android平台启动失败,Android Studio输出的完整崩溃栈如下:
2021-01-05 17:56:53.977 12952-12952/io.emerge.tactileengine E/AndroidRuntime: FATAL EXCEPTION: main Process: io.emerge.tactileengine, PID: 12952 java.lang.RuntimeException: Unable to start activity ComponentInfo{io.emerge.tactileengine/io.emerge.tactileengine.MainActivity}: com.chaquo.python.PyException: ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: com.chaquo.python.PyException: ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. at <python>.multiprocessing.synchronize.<module>(synchronize.py:30) at <python>.zipimport.load_module(<frozen zipimport>:259) at <python>.java.chaquopy.import_override(import.pxi:60) at <python>.multiprocessing.queues.__init__(queues.py:39) at <python>.multiprocessing.context.Queue(context.py:103) at <python>.top.tactile_engine.setup_unity_comm(tactile_engine.py:67) at <python>.top.tactile_engine.run(tactile_engine.py:54) at <python>.asyncio.base_events.run_until_complete(base_events.py:612) at <python>.asyncio.runners.run(runners.py:43) at <python>.top.tactile_engine.main(tactile_engine.py:148) at <python>.chaquopy_java.call(chaquopy_java.pyx:281) at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:253) at com.chaquo.python.PyObject.callAttrThrows(Native Method) at com.chaquo.python.PyObject.callAttr(PyObject.java:209) at io.emerge.tactileengine.MainActivity.onCreate(MainActivity.kt:33) at android.app.Activity.performCreate(Activity.java:7009) at android.app.Activity.performCreate(Activity.java:7000) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
内容的提问来源于stack exchange,提问作者Sabersimon
相关产品推荐
相关产品推荐

