【安卓】flutter使用C代码库----android篇

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使用C代码库----android篇

要注意由于flutter使用的是比较新的android技术,所以NDK编译套件也是需要比较新的,由于libflutter.so提供的平台版本都是比较新的,如果NDK编译出来的libgalaxy.so动态库只包含较老的平台版本,会导致libflutter.so支持的平台libgalaxy.so不支持,导致运行时找不到定义的C函数。

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

【安卓】flutter使用C代码库----android篇

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

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

3) main.dart里的内容:
【安卓】flutter使用C代码库----android篇

【安卓】flutter使用C代码库----android篇

main函数上面的部分,可以单独拎出来放在一个dart文件中。

这样就OK了。

以上是 【安卓】flutter使用C代码库----android篇 的全部内容, 来源链接: utcz.com/a/101893.html

回到顶部