关于c:flutter使用C代码库android篇

46次阅读

共计 660 个字符,预计需要花费 2 分钟才能阅读完成。

1)和原生 Android 开发的 NDK 技术一样,编译出.so 动静库(下文称之为 libgalaxy.so,蕴含简略的 native_add 函数
int32_t native_add(int32_t x, int32_t y) {return x + y;}
)。并把动静库拷贝到 flutter 我的项目的 android/app/src/main/jniLibs 子目录下:

要留神因为 flutter 应用的是比拟新的 android 技术,所以 NDK 编译套件也是须要比拟新的,因为 libflutter.so 提供的平台版本都是比拟新的,如果 NDK 编译进去的 libgalaxy.so 动静库只蕴含较老的平台版本,会导致 libflutter.so 反对的平台 libgalaxy.so 不反对,导致运行时找不到定义的 C 函数。

2)编辑 android/app 目录下的 build.gradle,减少以下内容:

release 版本要管制包的大小,所以,限定只须要提供 armeabi-v7a 和 arm64-v8a,如果不做此限定,打包时,会把 libgalaxy.so 的 x86 和 x86_64 也打进 release 版本!这就没有必要了。当前甚至能够只打包 arm64-v8a 版本。(如果上一步 jniLibs 目录下只提供了 arm64-v8a 版本,这一个就不必做了)

debug 局部,我认为就没有必要做 abiFilters 限定了,由 flutter 编译器本人决定吧,多打几个版本进去也无所谓了。

3)main.dart 里的内容:

main 函数下面的局部,能够独自拎进去放在一个 dart 文件中。

这样就 OK 了。

正文完
 0