Jni
jni 是一種 java 調用 c 語言的方式
java 反編譯比c容易
參考文獻:
https://www.jianshu.com/p/87ce6f565d37
https://blog.csdn.net/carson_ho/article/details/73250163
- 微信arm
微信是放在一個包裏自動加載的,不是分文件夾
https://blog.csdn.net/shb2058/article/details/71438977
目前Android共支持七種不同類型的CPU架構,分別是:ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從2014年起)。如果你要完美兼容所有類型的手機,理論上是要在的libs目錄下放置各個架構平臺的SO文件。
Tip
就目前市場份額而言,絕大部分的設備都已經是armeabi-v7a、arm64-v8a,你也可以考慮只保留armeabi-v7a架構的SO文件,這樣能獲得更好的性能效果。
- armabi
問題
- 爲什麼 v7a flutter 可以打包出去用了?
- 信息一
最近項目中遇到了要使用opencv的情況,涉及到了abi兼容的選擇。因爲如果全部都適配的話,包很大,這樣兼容那些用戶數極少的cpu就很不划算,所以我只適配了armeabi-v7a這一個。但是今天在x64-v8a的模擬器上看的時候,提示我的library.so文件找不到,我記得這個應該是向下兼容的,但是出現這種情況很奇怪,於是我就在網上找了找答案。
ndk {
abiFilters “armeabi-v7a” // 指定要ndk需要兼容的架構(這樣其他依賴包裏mips,x86,armeabi,arm-v8之類的so會被過濾掉)
}
- 先改了 gradle, 再改了 命令:
flutter build apk --target-platform android-arm64
信息2 , 查看 flutter apk 解壓完畢後只有 armv7a 支持
現準備 arm64-v8a(兼容 armeabi-v7a) 測試,以及armeabi(只支持 armeabi),預期結果 arm64-v8a 兼容,armeabi 不兼容。
下一步, 打包 armeabi so 包測試。預期結果兩個都兼容,但是速度有一點損失
-> sdk 下載中
- 不同的 so 包文件如何發 app包,可有一種兼容方式(編譯所有的 so 到一起?)
- flutter 再打包測試一下
- 再加一個視頻