Flutter1.5.4暂时不支持打同时支持32和64位的包,后面这个问题可能会解决。
flutter build apk
或flutter build apk --target-platform android-arm
:只打32位包。即libflutter.so
只会被放在armeabi-v7a目录下。flutter build apk --target-platform android-arm64
:只打64位包。即libflutter.so
只会被放在arm64-v8a目录下。
由此引发的一个问题:比如使用科大讯飞语音库,通常会在armeabi-v7a、arm64-v8a目录下同时放入libmsc.so
(科大讯飞的动态库),假设我们打的是32位包,那么libflutter.so
就只会被放在armeabi-v7a目录下。这样的话,如果app运行于64位cpu的手机上,那么因为存在arm64-v8a目录,系统会认为此app是64位的,因此当需要用到libflutter.so
时就只会去arm64-v8a目录下找,而arm64-v8a目录下并没有libflutter.so
,于是就是会报找不到libflutter.so
的错误,并且闪退。
如果app中没有arm64-v8a目录,那么app会运行在32位模式下(64位cpu也支持运行32位程序),那么反而不会有问题。
临时解决办法:删除arm64-v8a目录。