微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记录一次Android jni方式调用python简单调试过程中遇到的问题

此次主要以如下两个方案为主:

(1)Android与Python爱之初体验

https://www.jianshu.com/p/aba8a1ae783e

(2)Android 平台的Python——JNI方案(二)

http://www.coder55.com/article/8963 或者 https://blog.csdn.net/yingshukun/article/details/78571884

 

1、Android选择DNK出现“NDK does not contain any platforms”可以用如下方案解决

https://blog.csdn.net/hiphopxiao/article/details/112220228

选择低版本NDK

2、编译过程中遇到缺少crystax依赖编译不过,在android.mk中加入

# Include libcrystax.so
include $(CLEAR_VARS)
LOCAL_MODULE := crystax
LOCAL_SRC_FILES := $(CRYSTAX_PATH)/sources/crystax/libs/$(TARGET_ARCH_ABI)/libcrystax.so
LOCAL_EXPORT_CFLAGS := -I $(CRYSTAX_PATH)/crystax/include/
include $(PREBUILT_SHARED_LIBRARY)

3、编译过程中遇到x86编译不过,如果是缺少ieeefp.h依赖,可以注释掉pyport.h中的325行即可解决编译问题。

#ifdef HAVE_IEEEFP_H
#include <ieeefp.h>  /* needed for 'finite' declaration on some platforms */
#endif

改为:

#ifdef HAVE_IEEEFP_H
//#include <ieeefp.h>  /* needed for 'finite' declaration on some platforms */
#endif

4、pyatomic.h编译不过的问题,可参考如下链接修改

https://bugs.python.org/msg321697

typedef struct _Py_atomic_address {
    _Atomic void * _value;
} _Py_atomic_address;

改为

typedef struct _Py_atomic_address {
    _Atomic (void *) _value;
} _Py_atomic_address;

5、android studio 4.1.2, gradle 4.0.1和6.1.1,ndk版本19,minsdk 14.

build.gradle中加入

sourceSets {
    main {
        jniLibs.srcDirs = ['src/main/libs']
    }
}

6。参考原文所参考的项目https://github.com/joaoventura/pybridge补全AssetExtractor类的代码

7、参考原文所参考的项目https://github.com/joaoventura/pybridge

jni-test.c中

snprintf(paths, sizeof(paths), "%s:%s/stdlib.zip", pypath, pypath);

改为:

snprintf(paths, sizeof(paths), "%s:%s/stdlib.zip:%s/modules", pypath, pypath, pypath);

8、将test.py、stdlib.zip(crystax中的sources\python\3.5\libs)和modules(crystax中的sources\python\3.5\libs)拷贝到asserts下的pothon中,否则可能会导致出现如下类似log:

Py_Initialize()出错,可能的log,Android 5和以下:

 A/libc: Fatal signal 6 。。。

Android 6以上:

出现 A/libc: Fatal signal 11。。。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐