Android第五课 编译错误分析

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


猜你喜欢

转载自blog.51cto.com/fengyuzaitu/2155785