导入.so包的一些坑

导入.so包是各种坑哭,说说我自己碰到的几种:

1.没有在jniLibs里面写64位的文件夹,会报找不到的异常。

解决方法:把文件夹都建好,然后放入相应的.so包即可。奋斗


2.没有建好相应的包名,造成的异常。奋斗

异常:

    java.lang.UnsatisfiedLinkError: Native method not found: com.ishow.scan.zbar.ZbarManager.decode:([BIIZIIII)Ljava/lang/String;
            at com.ishow.scan.zbar.ZbarManager.decode(Native Method)
            at com.ishow.scan.decode.DecodeHandler.decode(DecodeHandler.java:58)
            at com.ishow.scan.decode.DecodeHandler.handleMessage(DecodeHandler.java:39)
            at android.os.Handler.dispatchMessage(Handler.java:107)
            at android.os.Looper.loop(Looper.java:194)
            at com.ishow.scan.decode.DecodeThread.run(DecodeThread.java:45)

解决方法:一定要在工程中建立好相应的包名,以zbar为例,一定要建立以下的包名


不然就会报上述异常。哭

后面会继续编辑,有坑的可以发我邮箱看一下,微笑
邮箱地址:jsmeli@163.com

<think>我们正在回答用户关于在麒麟V10系统下使用Nuitka打Python应用的问题。根据引用[1]提供的信息,我们知道在麒麟V10上打Python程序可能会遇到一些环境配置问题。因此,我们需要指导用户安装必要的依赖,然后使用Nuitka进行打。 步骤: 1. 确保系统已更新,并安装必要的编译工具和Python开发环境。 2. 安装Python3和pip3(如果还没有的话)。 3. 安装Nuitka。 4. 安装可能需要的其他依赖(如tkinter,openpyxl等,根据用户项目需求)。 5. 使用Nuitka命令打。 注意:引用[1]中提到了一些,比如默认没有pip,没有tkinter,没有openpyxl,以及Nuitka的版本问题。我们将参考这些信息。 具体步骤: 1. 更新系统并安装编译依赖: 在终端中执行以下命令: ```bash sudo apt update sudo apt install -y build-essential python3-dev ``` 2. 安装pip3(如果尚未安装): ```bash sudo apt install -y python3-pip ``` 3. 安装Nuitka(引用[1]提到Nuitka最新版本为1.6,但我们可以安装最新稳定版,或者指定版本): ```bash pip3 install nuitka ``` 如果需要指定版本(例如1.6): ```bash pip3 install nuitka==1.6 ``` 4. 安装项目所需的依赖: 例如,如果用户需要tkinter,则安装: ```bash sudo apt install -y python3-tk ``` 如果用户需要openpyxl,并且需要指定版本(引用[1]提到2.6.4): ```bash pip3 install openpyxl==2.6.4 ``` 5.Python程序: 基本命令: ```bash nuitka3 --standalone --follow-imports your_script.py ``` 其中: `--standalone`:创建一个独立的目录,含所有依赖。 `--follow-imports`:跟踪并含所有导入的模块。 如果需要优化,可以添加: `--onefile`:将打结果打成单个可执行文件(注意:这可能会增加启动时间,且目前对Linux的支持可能不如Windows完善,但可以尝试)。 `--remove-output`:在生成后删除临时输出目录(可选)。 6. 如果遇到问题,可以尝试启用插件(例如,对于tkinter,可能需要添加`--enable-plugin=tk-inter`): ```bash nuitka3 --standalone --follow-imports --enable-plugin=tk-inter your_script.py ``` 7.完成后,会在当前目录生成一个`your_script.dist`目录(或单个可执行文件,如果使用了`--onefile`),里面含可执行文件和所有依赖。 注意:由于麒麟V10是基于Debian的,因此上述apt命令是适用的。但是,如果用户使用的是其他架构(如ARM),可能需要额外的步骤。 引用[1]还提到使用pyinstaller,但用户明确要求使用Nuitka,所以我们只关注Nuitka。 另外,Nuitka在打过程中会进行编译,因此需要C编译器(如gcc)和Python开发头文件(上面已经安装)。 示例:打一个名为`main.py`的程序 ```bash nuitka3 --standalone --follow-imports main.py ``` 打完成后,进入`main.dist`目录,运行可执行文件: ```bash ./main ``` 如果程序使用了图形界面(如tkinter),请确保在运行环境中安装了必要的图形库(通常已经安装,但如果是最小化安装的系统,可能需要安装)。 常见问题: - 如果打过程中出现模块缺失,可能需要手动添加(通过`--include-module`或`--include-package`),或者检查是否安装了该模块。 - 对于数据文件,可能需要使用`--include-data-files`选项。 由于Nuitka是一个复杂的工具,建议用户查阅Nuitka官方文档以获取更多选项和优化。 最后,根据指令,我们需要生成相关问题。 注意:我们的回答基于引用[1]的信息,但用户的问题是关于Nuitka的,所以重点放在Nuitka的使用上。</think>### 麒麟V10系统下使用Nuitka打Python应用指南 #### 1. **环境准备** - **更新系统并安装编译工具**: ```bash sudo apt update sudo apt install -y build-essential python3-dev ``` 编译工具是Nuitka将Python代码转换为C代码的必要依赖[^1]。 - **安装Python依赖**: ```bash sudo apt install -y python3-pip python3-tk # 基础环境 pip3 install openpyxl==2.6.4 # 兼容性版本 ``` #### 2. **安装Nuitka** - 安装最新稳定版(当前1.6+): ```bash pip3 install nuitka ``` 或指定版本(推荐): ```bash pip3 install nuitka==1.6 # 引用中验证的兼容版本[^1] ``` #### 3. **基本打命令** - **单文件打**: ```bash nuitka3 --standalone --follow-imports your_script.py ``` 生成`your_script.dist`目录,内含可执行文件。 - **单文件可执行程序**(需额外依赖): ```bash nuitka3 --onefile --follow-imports your_script.py ``` #### 4. **特殊依赖处理** - **图形界面程序**(如Tkinter): ```bash nuitka3 --standalone --enable-plugin=tk-inter your_script.py ``` - **含数据文件**(如配置文件): ```bash nuitka3 --standalone --include-data-files=config.json=config.json your_script.py ``` #### 5. **常见问题解决 - **缺失动态库**: 若运行时报`libpythonXXX.so`错误,手动链接库: ```bash sudo ln -s /usr/lib/x86_64-linux-gnu/libpython3.8.so.1 /usr/lib/libpython3.8.so ``` - **兼容性问题**: 对麒麟V10特有库(如UKUI组件),添加: ```bash nuitka3 --standalone --include-module=麒麟专用模块名 ... ``` #### 6. **验证打结果** ```bash cd your_script.dist ./your_script # 运行测试 ldd your_script # 检查动态库依赖 ``` ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值