1. 程式人生 > >Android第五課 編譯錯誤分析

Android第五課 編譯錯誤分析

設備 錯誤頁面 純虛函數 error: nim 虛函數 指令 信息 target

1)Error 1C/C++ Problem
問題
DescriptionDescription Resource Path Location Type
make.exe: *** [obj/local/armeabi-v7a/libtest.so] Error 1C/C++ Problem
解決
通過Eclipse無法定位到相關的錯誤信息,因此進入項目的jni目錄,執行ndk-build指令,打印出詳細的錯誤細節。根本原因是沒有實現一個純虛函數的接口

2)Type jint could not be resolved
原因
沒有導入NDK頭文件

原因
在Android工程打開.cpp文件編輯的時候,也會自動調用Java編譯器對當前代碼進行編譯,因此Java編譯器肯定無法正常編譯C++代碼,導致了問題的出現

解決
編譯工程的時候,當前的Eclipse編輯界面不能是.c或者.cpp文件,必須是.java或者.h文件。操作如下,切換到.java文件,然後刪除所有的錯誤信息,這樣子就可以順利編譯通過,實際上Jni模塊都是調用ndk-build進行編譯的

3)cannot be resolved or is not a field
問題
DescriptionResourcePathLocationType
bt_mycity cannot be resolved or is not a fieldChangeCityActivity.java
原因
該變量沒有在布局文件xml中定義。雙擊錯誤,然後跳轉到錯誤頁面,按下Ctrl,鼠標點擊變量發現無法跳轉到變量定義的布局文件,正常情況下如果有定義,是可以正常跳轉的

解決
在布局文件中添加該變量的定義。如果該布局頁面沒有被實際使用到,可以直接刪除該錯誤,通知編譯器忽略該錯誤,就可以順利編譯,不妨礙正常安裝
註意
忽略錯誤信息,在跳轉到該頁面的時候,可能會出現崩潰

4)Unable to resolve target 'android-23'
編譯項目出錯如下:
Description Resource Path Location Type
The project was not built since its buildpath is incomplete. Cannot find the class file for java.lang.Object. Fix thebuild path then try building this project
Description Resource Path Location Type
Unable to resolve target 'android-23' Unknown Android Target Problem
Description Resource Path Location Type
error: No resource identifier found forattribute 'letterSpacing' in package 'android'

原因
目標設備是Android 6.0, 需要使用的API為23,查看Project Properties中Android選項,查看到當前只有Android 4.4.2的版本API 19,所以需要更新SDK

5)appcompat_v7的作用以及編譯錯誤
現象:
ADT環境版本v22.6.2-1085508,創建一個項目的時候,都會創建一個appcompat_v7,如果創建多個
新的項目,還會出現appcompat_v7_1等,依次遞增。

原因:
appcompat_v7是google的一個兼容包,就是一個支持庫,能讓2.1以上的Android SDK使用4.0版本的界面。通俗來說就是你手機Android版本SDK是2.1,通過添加這個庫(這個庫將會打包進apk),能夠顯示4.0版本的超炫畫面。


問題:
創建一個新的項目出錯如下:
The container 'Android Dependencies' references non existing library \appcompat_v7_5\bin
\appcompat_v7_5.jar'

解決方案:
點擊Project,選擇Clean,選擇Clean All Project,單獨選擇創建的新項目不行。然後就可以編譯運行.

當然,如果目標設備是4.0以上的版本,完全不用appcompat,可以直接在創建項目的時候,將Minimum Required SDK版本選擇在4.0以上,就不會創建appcompat這個包了。

參考:http://jingyan.baidu.com/article/3ea51489e04eb852e61bbaa4.html


Android第五課 編譯錯誤分析