尝试使用cm在Android上运行Python

2024-06-28 16:16:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是一个很长的机会。在

因此,使用这个GitHub Python项目,我现在可以在Android building上运行Python,并使用gradle的实验版本。我们正在尝试升级到主线gradle和最新的Android Studio,因此我们正试图用cMake构建我们所有的NDK产品。我们有一切可以让它运行的东西,但是一旦我们启动Python,它就会说它无法导入_socket。在

我们在这个项目中有相同的assest和Python,我们包含了所有的共享库,以便思考编译和链接。你知道我不能导入socket的东西了吗?我假设这是一个c模块,它正试图导入并运行,但不明白它找不到它会有什么不同。在

enter image description here

cmake_minimum_required(VERSION 3.4.1) project(workflow) set(CMAKE_ANDROID_STL_TYPE gnustl_shared) set(CMAKE_SYSTEM_VERSION 23) # configure directory variables for use throughout this file set(distribution_dir ${CMAKE_SOURCE_DIR}/../jniLibs) set(jni_src_dir ${CMAKE_SOURCE_DIR}/../jni) # set all our include directories (header locations) include_directories(${jni_src_dir}/asr/inc ${jni_src_dir}/ext/android/audioin/inc ${jni_src_dir}/asr ${jni_src_dir}/python ${jni_src_dir}/pdd ${jni_src_dir}/pdd/os ${jni_src_dir} ) # define the 3rd party libraries to include in this project # this includes all Nuance stuff, and our custom built python lib add_library(libgenericdca SHARED IMPORTED) set_target_properties(libgenericdca PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libgenericdca.so) add_library(libvocon3200_sem SHARED IMPORTED) set_target_properties(libvocon3200_sem PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_sem.so) add_library(libpal_audio SHARED IMPORTED) set_target_properties(libpal_audio PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libpal_audio.so) add_library(libpal_core SHARED IMPORTED) set_target_properties(libpal_core PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libpal_core.so) add_library(libpython35m SHARED IMPORTED) set_target_properties(libpython35m PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libpython3.5m.so) add_library(libvocon3200_asr SHARED IMPORTED) set_target_properties(libvocon3200_asr PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_asr.so) add_library(libvocon3200_base SHARED IMPORTED) set_target_properties(libvocon3200_base PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_base.so) add_library(libvocon3200_gram2 SHARED IMPORTED) set_target_properties(libvocon3200_gram2 PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_gram2.so) add_library(libvocon3200_platform SHARED IMPORTED) set_target_properties(libvocon3200_platform PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_platform.so) add_library(libvocon3200_pron SHARED IMPORTED) set_target_properties(libvocon3200_pron PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_pron.so) add_library(libvocon3200_sem3 SHARED IMPORTED) set_target_properties(libvocon3200_sem3 PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon3200_sem3.so) add_library(libvocon_ext_heap SHARED IMPORTED) set_target_properties(libvocon_ext_heap PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon_ext_heap.so) add_library(libvocon_ext_stream SHARED IMPORTED) set_target_properties(libvocon_ext_stream PROPERTIES IMPORTED_LOCATION ${distribution_dir}/${ANDROID_ABI}/libvocon_ext_stream.so) # set various C and CXX(++) flags set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNDEBUG") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions") # recursive wildcard search to find all the right cpp and c source files to compile file(GLOB_RECURSE source_files ${jni_src_dir}/asr/*.cpp ${jni_src_dir}/ext/android/audioin/src/*.c ${jni_src_dir}/asr/*.cpp ${jni_src_dir}/pdd/*.cpp ${jni_src_dir}/pdd/os/*.cpp ${jni_src_dir}/*.cpp) SET( workflow_source ${source_files}) # finally, set up our workflow library and attach the source files above (this causes cmake to compile the sources) add_library(workflow SHARED ${workflow_source}) # set our workflow library to be C++ SET_TARGET_PROPERTIES (workflow PROPERTIES LINKER_LANGUAGE CXX) # lastly, set to link against the 3rd party libs above target_link_libraries(workflow android libgenericdca libvocon3200_sem libpal_audio libpal_core libpython35m libvocon3200_asr libvocon3200_base libvocon3200_gram2 libvocon3200_platform libvocon3200_pron libvocon3200_sem3 libvocon_ext_heap libvocon_ext_stream log atomic)


Tags: srcaddtargetdirlibrarylocationpropertiesdistribution