FAQ集合

不硅步无以至千里,在此记录一下常遇见的错误集合。

1. 在用NDK编译live555中出现make: *** No rule to make target `/key_C/jni/./live/groupsock/GroupEId.cpp‘, needed by `/key_C/obj/local/armeabi/objs/live555/./livegroupsock/GroupEId.cpp.o'.  Stop.

首先确定cpp文件确实存在,有的时候cpp文件不存在就会报这种错误,检查Android.mk文件的格式,

LOCAL_PATH := $(call my-dir)  
  
include $(CLEAR_VARS)  
  
LOCAL_MODULE := live555


在上面的语句后面是直接回车换行,即后面是没有空格存在的,我的Android.mk文件时直接Ctrl+C来的,后来发现copy过来的文件的每一个语句后面都有空格存在,因此导致这个错误,记之

2. 在试用JNI过程中出现error: request for member 'FindClass' in something not a structure or union这个错误

解决办法如果是c程序,要用 (*env)->,如果是C++要用 env->

3. error: too few arguments to function '(*env)->GetFieldID'

解决办法,在函数的最前面加上env即可如:jfieldID option = (*env)->GetFieldID(env, objectClass, "option", "I");

4.importError:libsqlite3.so.0:cannot open shared object file:No such file or directory

在/usr/lib目录下的确没有找到该文件,在终端输入apt-get install libsqlite3-dev,解决。

5. android udp通信时收到的数据不正确,一直是相同的数据

udp通信时用两个DatagramPacket对象,一个用于发送,一个用于接收,二者就没有影响了。

6. socket通信接收中文

只需指定两端的编码格式就可以搞定了

in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));//接收消息
			out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
								socket.getOutputStream(),"UTF-8")),true);	//向服务器发送消息


7. 从udp通信中获取对方ip地址

SocketAddress socketAddress= dataPacket_Recv.getSocketAddress();

用这句话获取对方的ip,并用toString()输出发现在Android2.3和Android4.X平台上得到的结果不同,在Android2.3平台上得到的结果如下

172.20.10.195/172.20.10.195:1111

而在Android4.X平台上得到的结果如下

/172.20.10.195:1111

这也导致了程序在Android4.X平台上运行没有得到应有的效果。。。

8. MFC向数据库中插入汉字不成功,

首先设置数据库中相关字段的编码为“gbk_chinese_ci”,然后设置数据源->配置->Detail->Character Set为gbk,即可


你可能感兴趣的:(FAQ集合)