国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Eclipse NDK遷移到Android Studio的方法示例

2019-12-12 01:05:29
字體:
來源:轉載
供稿:網友

最近看一個NDK項目,因為源碼使用Eclipse IDE寫的,想把代碼導入Android Studio使用,畢竟好用很多,使用AS導入后,第一個問題就是編碼問題,項目之前竟然使用的是GBK編碼。首先就是改變編碼問題。我先在設置中將項目編碼改為UTF-8,build結果顯示一堆錯誤的亂碼,在網上逛了一圈,找到解決方案。

編碼

  1. 將AS右下角的UTF-8換成GBK。
  2. 跳出提示選擇"reload",此時注釋之類的亂碼會顯示正確。
  3. 右下角再選擇UTF-8
  4. 跳出提示選擇"convert",此時編碼從GBK轉為UTF-8。
  5. 編譯運行,就不會出現亂碼錯誤了。
  6. 別的亂碼的類也是這種方法

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的方式鏈接。

  1. cmake: 選擇CMakeLists.txt文件
  2. NDK build: 選擇Android.mk文件

或者你也可以在你的module中加入

externalNativeBuild {  ndkBuild {   path 'src/main/jni/Android.mk'  } }

無法導入

ndk支持后,現在運行項目,項目可以啟動了,可是運行直接崩潰,崩潰日志為:

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調用對應函數時,找不到對應的c++函數.

遇到這種情況,不要懷疑,sdk提供的包一定要把包名完整拷貝到項目。路徑要與so函數相對應。

text relocations

java.lang.UnsatisfiedLinkError...xxx.so has text relocations

把targetSdkVersion降級到22就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凌源市| 鹰潭市| 苗栗市| 当阳市| 瑞丽市| 高清| 东平县| 宣武区| 永州市| 吴川市| 三原县| 三都| 赤峰市| 长白| 黄平县| 周口市| 盱眙县| 故城县| 革吉县| 中江县| 桓台县| 许昌县| 定州市| 南雄市| 纳雍县| 淮南市| 承德市| 屯留县| 商都县| 扎赉特旗| 清流县| 凤凰县| 凤台县| 新巴尔虎右旗| 武川县| 惠州市| 东辽县| 尉氏县| 福贡县| 丹巴县| 德江县|