Eclipse NDK遷移到Android Studio的方法示例
最近看一個NDK項目,因為源碼使用Eclipse IDE寫的,想把代碼導入Android Studio使用,畢竟好用很多,使用AS導入后,第一個問題就是編碼問題,項目之前竟然使用的是GBK編碼。首先就是改變編碼問題。我先在設置中將項目編碼改為UTF-8,build結(jié)果顯示一堆錯誤的亂碼,在網(wǎng)上逛了一圈,找到解決方案。
編碼
- 將AS右下角的UTF-8換成GBK。
- 跳出提示選擇"reload",此時注釋之類的亂碼會顯示正確。
- 右下角再選擇UTF-8
- 跳出提示選擇"convert",此時編碼從GBK轉(zhuǎn)為UTF-8。
- 編譯運行,就不會出現(xiàn)亂碼錯誤了。
- 別的亂碼的類也是這種方法
NDK支持
將項目導入之后,build有提示錯誤:
Error: Flag android.useDeprecatedNdk is no longer supported and will be removed in the next version of Android Studio. Please switch to a supported build system.
Consider using CMake or ndk-build integration. For more information
我們把gradle.properties中android.useDeprecatedNdk=true去掉。然后直接在AS右鍵Linked C++ Project.選擇cmake或者ndk build的方式鏈接。
- cmake: 選擇CMakeLists.txt文件
- NDK build: 選擇Android.mk文件
或者你也可以在你的module中加入
externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } }
無法導入
ndk支持后,現(xiàn)在運行項目,項目可以啟動了,可是運行直接崩潰,崩潰日志為:
java.lang.UnsatisfiedLinkError: Couldn't load xxx from loader dalvik.system.PathClassLoader
看樣子是無法加載庫,在module中加入:
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
然后在defaultConfig中加入:
ndk { moduleName "your ndk module name" abiFilters "armeabi", "armeabi-v7a", "x86" }
找不到方法
java.lang.UnsatisfiedLinkError: No implementation found for int xxxxx
大概意思是so庫加載成功了,但是java調(diào)用對應函數(shù)時,找不到對應的c++函數(shù).
遇到這種情況,不要懷疑,sdk提供的包一定要把包名完整拷貝到項目。路徑要與so函數(shù)相對應。
text relocations
java.lang.UnsatisfiedLinkError...xxx.so has text relocations
把targetSdkVersion降級到22就可以了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter利用Canvas模擬實現(xiàn)微信紅包領(lǐng)取效果
這篇文章主要為大家詳細介紹了如何利用Flutter中的Canvas模擬實現(xiàn)微信紅包領(lǐng)取的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-03-03詳解Android Libgdx中ScrollPane和Actor事件沖突問題的解決辦法
這篇文章主要介紹了詳解Android Libgdx中ScrollPane和Actor事件沖突問題的解決辦法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09React?Native之在Android上添加陰影的實現(xiàn)
這篇文章主要介紹了React?Native之在Android上添加陰影的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Android開發(fā)入門之Notification用法分析
這篇文章主要介紹了Android中Notification用法,較為詳細的分析了Notification的功能、使用步驟與相關(guān)注意事項,需要的朋友可以參考下2016-07-07Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實例
本篇文章主要介紹了Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Android DrawLayout結(jié)合ListView用法實例
這篇文章主要介紹了Android DrawLayout結(jié)合ListView用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09