Flutter插件引入第三方jar包之armeabi

本文讲述了在Flutter项目中遇到的架构问题,即如何在v8a架构下导入jar包和SO文件,并解决因架构不兼容导致的插件调用失败问题。同时,作者分享了Android开发中的资源管理和面试准备策略,包括如何检查文件引入、解决ABI兼容问题以及提升面试技巧。
摘要由CSDN通过智能技术生成

由于测试机是v8a的架构,而且flutter经过多个版本更新后,不能直接flutter run的时候指定平台架构为32位的,则无法调用到so文件,所以有不小的麻烦。这先按下不表。

一、导入jar包和so文件

导入jar包

首先还是在plugin/android的目录新建一个libs文件夹,然后将jar文件放进去就好

image.png

然后在依赖里一个一个导入就好。

dependencies {
implementation files(‘libs/hyfisheyepano.jar’)
implementation files(‘libs/mid-core-sdk-4.0.7.jar’)
implementation files(‘libs/org.apache.http.legacy.jar’)
implementation files(‘libs/wup-1.0.0.E-SNAPSHOT.jar’)
implementation files(‘libs/Xg_sdk_4.0.3_20180720_1441.jar’)
implementation files(‘libs/nv_sdk_v1.0.0.jar’)
}

导入so文件

so文件包在编辑器中只需要放入指定位置,就可以被找到,在Android studio中需要放在src/main/jniLibs中,所以直接将文件包一下子复制进去。

image.png

如果有多种架构的so文件,同样也是把包整体复制进来。

运行一下

这个时候,程序是可以正常跑起来了,不涉及到插件功能的时候运行正常,一旦需要调用一下插件的方法的时候,程序会直接奔溃退出,查看控制台,提示出Can't link the lib

image.png

这里的提示语句是sdk里使用try catch返回出来的,本意就是coundn't find "xxx.so",无法在程序里面找到所需要的文件,按照方法导入了,怎么又无法链接到,接着往下看。

二、加载so文件

上面我们运行了一下,发现是jar包里的方法需求调用so文件,但是怎么都调用不到,这又是什么问题?

验证安装包

首先想到的是验证一下文件是否引入成功,如果文件引入成功,可以直接查看apk里查看到引入的文件。所以首先找到安装包的位置

当flutter运行于debug模式的时候,程序会先生成一个app-debug.apk的文件,储存在项目目录中build/app/outputs/flutter-apk的这个位置,当然这里同时也保存了release版的安装包。

在Android studio的菜单栏中,找到build -> Analyze Apk这个功能,打开我们的app-debug.apk

image.png

可以发现里面包含了多种架构的jniLibs,而我们的手机是arm64-v8a,程序非常符合逻辑的就去对应的架构中去寻找需要文件,而我们的文件只有armeabi的版本,找不到文件,插件方法无法调用,程序就报错崩溃

image.png

根据开头提到的:armeabi-v7aarm64-v8a这两种架构是可以向下兼容的,聪明的你肯定想到可以把其他架构的文件包删掉就好,只有保留有内容的。

解决方法

解决方法就一句话,在build.gradle文件中加上以下这句话:

android{
defaultConfig{
ndk {
abiFilters ‘armeabi’
}
}
}

在这里是通过 abiFilters 来指定我们需要的 ABI,也就是指定需要的CPU架构,加上上面语句后,在通过Analyze Apk的功能,可以看到:

image.png

安装包里只剩armeabi了,这样的话,基本的3中架构调用文件的时候,都会调用到这个包里的文件,程序就不会崩溃了。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

79)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter引入第三方库是通过在 `pubspec.yaml` 文件中声明依赖来实现的。为了将 Flutter 应用程序构建为 Window 和 Mac 桌面应用程序,您需要使用 Flutter Desktop 插件。使用 Flutter Desktop 插件,您可以在 Flutter 中使用许多现有的桌面库,例如 GTK、Qt、Electron 等。 以下是在 Flutter引入第三方库的一般步骤: 1. 打开 `pubspec.yaml` 文件。 2. 在 `dependencies` 部分中添加库的名称和版本号。例如: ```yaml dependencies: http: ^0.13.3 ``` 3. 运行 `flutter pub get` 命令从网络下载库并将其添加到您的项目中。 4. 使用 `import` 语句将库导入到您的代码中。例如: ```dart import 'package:http/http.dart' as http; void main() { // 使用 http 库的代码 } ``` 要将 Flutter 应用程序构建为 Window 和 Mac 桌面应用程序,请按照以下步骤操作: 1. 在 Flutter 安装目录中运行 `flutter config --enable-windows-desktop` 命令以启用 Window 桌面支持。 2. 在 Flutter 安装目录中运行 `flutter config --enable-macos-desktop` 命令以启用 Mac 桌面支持。 3. 在您的 Flutter 项目中,运行 `flutter create .` 命令以创建一个桌面项目。 4. 在您的 Flutter 项目中,按照 Flutter Desktop 插件的文档说明添加依赖项和插件。 5. 使用 Flutter Desktop 插件提供的 API 来访问桌面特定功能,例如文件系统、网络、窗口管理等。 6. 运行 `flutter run -d windows` 命令以运行 Window 应用程序,或运行 `flutter run -d macos` 命令以运行 Mac 应用程序。 注意,构建 Flutter 桌面应用程序需要一些常规的桌面软件开发知识,例如 C++、Qt、Cocoa 等。如果您不熟悉这些知识,则可能需要更多的学习和实践才能成功构建桌面应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值