Eclipse NDK遷移到Android Studio的方法示例
最近看一個(gè)NDK項(xiàng)目,因?yàn)樵创a使用Eclipse IDE寫的,想把代碼導(dǎo)入Android Studio使用,畢竟好用很多,使用AS導(dǎo)入后,第一個(gè)問(wèn)題就是編碼問(wèn)題,項(xiàng)目之前竟然使用的是GBK編碼。首先就是改變編碼問(wèn)題。我先在設(shè)置中將項(xiàng)目編碼改為UTF-8,build結(jié)果顯示一堆錯(cuò)誤的亂碼,在網(wǎng)上逛了一圈,找到解決方案。
編碼
- 將AS右下角的UTF-8換成GBK。
- 跳出提示選擇"reload",此時(shí)注釋之類的亂碼會(huì)顯示正確。
- 右下角再選擇UTF-8
- 跳出提示選擇"convert",此時(shí)編碼從GBK轉(zhuǎn)為UTF-8。
- 編譯運(yùn)行,就不會(huì)出現(xiàn)亂碼錯(cuò)誤了。
- 別的亂碼的類也是這種方法
NDK支持
將項(xiàng)目導(dǎo)入之后,build有提示錯(cuò)誤:
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' } }
無(wú)法導(dǎo)入
ndk支持后,現(xiàn)在運(yùn)行項(xiàng)目,項(xiàng)目可以啟動(dòng)了,可是運(yùn)行直接崩潰,崩潰日志為:
java.lang.UnsatisfiedLinkError: Couldn't load xxx from loader dalvik.system.PathClassLoader
看樣子是無(wú)法加載庫(kù),在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庫(kù)加載成功了,但是java調(diào)用對(duì)應(yīng)函數(shù)時(shí),找不到對(duì)應(yīng)的c++函數(shù).
遇到這種情況,不要懷疑,sdk提供的包一定要把包名完整拷貝到項(xiàng)目。路徑要與so函數(shù)相對(duì)應(yīng)。
text relocations
java.lang.UnsatisfiedLinkError...xxx.so has text relocations
把targetSdkVersion降級(jí)到22就可以了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter利用Canvas模擬實(shí)現(xiàn)微信紅包領(lǐng)取效果
這篇文章主要為大家詳細(xì)介紹了如何利用Flutter中的Canvas模擬實(shí)現(xiàn)微信紅包領(lǐng)取的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03詳解Android Libgdx中ScrollPane和Actor事件沖突問(wèn)題的解決辦法
這篇文章主要介紹了詳解Android Libgdx中ScrollPane和Actor事件沖突問(wèn)題的解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09Flutter質(zhì)感設(shè)計(jì)之持久底部面板
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之持久底部面板,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08React?Native之在Android上添加陰影的實(shí)現(xiàn)
這篇文章主要介紹了React?Native之在Android上添加陰影的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Android實(shí)現(xiàn)返回拍攝的圖片功能實(shí)例
這篇文章主要介紹了Android實(shí)現(xiàn)返回拍攝的圖片功能,以實(shí)例形式較為詳細(xì)的分析了Android返回拍攝圖片功能的具體步驟與實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07Android開(kāi)發(fā)入門之Notification用法分析
這篇文章主要介紹了Android中Notification用法,較為詳細(xì)的分析了Notification的功能、使用步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-07-07Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實(shí)例
本篇文章主要介紹了Android中Activity之間跳轉(zhuǎn)和參數(shù)傳遞的實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02Android使用Xutils3進(jìn)行斷點(diǎn)下載的實(shí)例
在本篇內(nèi)容中小編給各位整理了關(guān)于Android使用Xutils3進(jìn)行斷點(diǎn)下載的實(shí)例以及相關(guān)代碼,需要的朋友們參考下。2019-07-07Android DrawLayout結(jié)合ListView用法實(shí)例
這篇文章主要介紹了Android DrawLayout結(jié)合ListView用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09