最近看一個NDK項目,因為源碼使用Eclipse IDE寫的,想把代碼導(dǎo)入Android Studio使用,畢竟好用很多,使用AS導(dǎo)入后,第一個問題就是編碼問題,項目之前竟然使用的是GBK編碼。首先就是改變編碼問題。我先在設(shè)置中將項目編碼改為UTF-8,build結(jié)果顯示一堆錯誤的亂碼,在網(wǎng)上逛了一圈,找到解決方案。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站制作與策劃設(shè)計,武陵網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:武陵等地區(qū)。武陵做網(wǎng)站價格咨詢:028-86922220
編碼
NDK支持
將項目導(dǎo)入之后,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的方式鏈接。
或者你也可以在你的module中加入
externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } }
無法導(dǎo)入
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)用對應(yīng)函數(shù)時,找不到對應(yīng)的c++函數(shù).
遇到這種情況,不要懷疑,sdk提供的包一定要把包名完整拷貝到項目。路徑要與so函數(shù)相對應(yīng)。
text relocations
java.lang.UnsatisfiedLinkError...xxx.so has text relocations
把targetSdkVersion降級到22就可以了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
當(dāng)前文章:EclipseNDK遷移到AndroidStudio的方法示例
網(wǎng)址分享:http://bm7419.com/article40/iioceo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、電子商務(wù)、網(wǎng)站建設(shè)、品牌網(wǎng)站制作、定制網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)