<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_dread</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/59991/rss</id><updated>2012-05-29T15:45:48Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/59991/rss"/><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/29/2524872.html</id><title type="text">tesseract-ocr mac编译</title><summary type="text">编译版本3.0.1编译环境 mac 10.6.8执行./configure 出现如下错误:config.status: error: cannot find input file: `Makefile.in'解决方法：run ./autogen.sh.然后再 make make installhttp://holybless.iteye.com/blog/1338717</summary><published>2012-05-29T15:08:00Z</published><updated>2012-05-29T15:08:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/29/2524872.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/29/2524872.html"/><content type="html">&lt;p&gt;编译版本3.0.1&lt;/p&gt;&lt;p&gt;编译环境 mac 10.6.8&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;执行./configure 出现如下错误:config.status: error: cannot find input file: `Makefile.in'解决方法：run ./autogen.sh.然后再 make       make install&lt;br /&gt;&lt;div&gt;http://holybless.iteye.com/blog/1338717&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2524872.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/29/2524872.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/22/2513301.html</id><title type="text">C++学习笔记1：virtual 继承</title><summary type="text">今天要学习的内容，有时间写个总结http://hi.baidu.com/cindyylxx/item/fdc4e35c8d98aa10da1635a3</summary><published>2012-05-22T06:34:00Z</published><updated>2012-05-22T06:34:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513301.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513301.html"/><content type="html">&lt;p&gt;今天要学习的内容，有时间写个总结&lt;/p&gt;&lt;a href="http://hi.baidu.com/cindyylxx/item/fdc4e35c8d98aa10da1635a3"&gt;http://hi.baidu.com/cindyylxx/item/fdc4e35c8d98aa10da1635a3&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2513301.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513301.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/22/2513288.html</id><title type="text">HTML5游戏参考资料</title><summary type="text">Facebook平台开发跨平台HTML5游戏的一些极有帮助的参考资料：1）viewporter. https://github.com/zynga/viewporter. 这个Zynga开源代码允许你获取任何设备的屏幕尺寸，并针对这些屏幕调整游戏大小。它比你自己从头编写代码更省时间（我们用过Viewporter，也自己写过代码，所以才会知道这一点。）2）Weinre.http://phonegap.github.com/weinre/. 这个远程调试器工作原理类似于Web Inspector，但它运行于移动设备。它有助于追踪iPhone和iPad等设备上的控制台错误信息。3）JQuery. h</summary><published>2012-05-22T06:26:00Z</published><updated>2012-05-22T06:26:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513288.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513288.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt; "&gt;Facebook平台开发跨平台HTML5游戏的一些极有帮助的参考资料：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; "&gt;1）viewporter. https://github.com/zynga/viewporter. 这个Zynga开源代码允许你获取任何设备的屏幕尺寸，并针对这些屏幕调整游戏大小。它比你自己从头编写代码更省时间（我们用过Viewporter，也自己写过代码，所以才会知道这一点。）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; "&gt;2）Weinre.http://phonegap.github.com/weinre/. 这个远程调试器工作原理类似于Web Inspector，但它运行于移动设备。它有助于追踪iPhone和iPad等设备上的控制台错误信息。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; "&gt;3）JQuery. http://jquery.com/ 你可以利用这个库中现成的代码，省下自己写代码的时间。它对文本动画处理极有用处，我们进行了一些修改并推出了JQuery Mobile，它更适用于移动设备平台。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt; "&gt;4）node.JS. http://nodejs.org/ 在你使用Javascript编写内容时，它可以让你省时省力地使客户端代码及服务器相适配。在作为游戏服务器时，node.JS的扩展性能也十分理想。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="4"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2513288.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/22/2513288.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/22/2512483.html</id><title type="text">Android JNI 数据类型转换</title><summary type="text">基本数据类型转换Java类型别名 C++本地类型 字节(bit)boolean jboolean unsignedchar 8,unsignedbyte jbyte signedchar 8char jchar unsignedshort 16,unsignedshort jshortshort 16int jint long 32long jlong __int64 64float jfloatfloat 32double jdoubledou...</summary><published>2012-05-21T16:37:00Z</published><updated>2012-05-21T16:37:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2512483.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/22/2512483.html"/><content type="html">&lt;p&gt;基本数据类型转换&lt;/p&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;Java类型&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;别名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C++本地类型&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;字节(bit)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;boolean&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; jboolean &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&amp;nbsp;&amp;nbsp;8,&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;byte&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jbyte &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;signed&amp;nbsp;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&amp;nbsp;8&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;char&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jchar &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned&amp;nbsp;&lt;span style="color: #0000FF;"&gt;short&lt;/span&gt; 16,&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;short&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jshort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;short&lt;/span&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 16&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jint &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;long&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;long&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jlong &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;__int64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jfloat&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;32&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;double&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jdouble&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;double&lt;/span&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 64 &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;也就说基本数据类型就可以直接转换了 ，比较麻烦的是char * 和jstring类型的呼唤，查看&lt;a href="http://home.pacifier.com/~mmead/jni/cs510ajp/jni.h"&gt;jni.h&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;可以知道有如下方法：&lt;/p&gt;&lt;p&gt;&lt;strong style="color: red; "&gt;jstring 转 char *&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp; const char *nativeString = (*env)-&amp;gt;GetStringUTFChars(env, javaString, 0);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;// 使用nativeString&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;(*env)-&amp;gt;ReleaseStringUTFChars(env, javaString, nativeString);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong style="color: red; "&gt;char * 转 jstring &amp;nbsp;(未测试)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;jstring &amp;nbsp;jstr = (*env)-&amp;gt;NewStringUTF(char *utf) &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;//&amp;nbsp;&amp;nbsp;// 使用jstr&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (*env)-&amp;gt;ReleaseStringUTFChars(env, jstr, utf);&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;&lt;strong&gt;String 转 jstring &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;String str = "test";&lt;/div&gt;&lt;div&gt;jstring jstr= m_jEnv-&amp;gt;NewStringUTF(str.utf8().data());&lt;/div&gt;&lt;p&gt;&lt;span style="color: red; "&gt;&lt;strong&gt;//删除java对象 jstr&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Tahoma; font-size: medium; line-height: normal; "&gt;pEnv-&amp;gt;DeleteLocalRef(&lt;/span&gt;jstr)&lt;span style="font-family: Tahoma; font-size: medium; line-height: normal; "&gt;;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;static jstring stoJstring(JNIEnv* env, const char* pat)&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;{&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jclass strClass = (*env)-&amp;gt;FindClass(env, "Ljava/lang/String;");&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jmethodID ctorID = (*env)-&amp;gt;GetMethodID(env, strClass, "&amp;lt;init&amp;gt;", "([BLjava/lang/String;)V");&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbyteArray bytes = (*env)-&amp;gt;NewByteArray(env, strlen(pat));&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*env)-&amp;gt;SetByteArrayRegion(env, bytes, 0, strlen(pat), (jbyte*)pat);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jstring encoding = (*env)-&amp;gt;NewStringUTF(env, "utf-8");&amp;nbsp;&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (jstring)(*env)-&amp;gt;NewObject(env, strClass, ctorID, bytes, encoding);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;}&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;static char* jstringTostring(JNIEnv* env, jstring jstr)&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;{&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char* rtn = NULL;&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jclass clsstring = (*env)-&amp;gt;FindClass(env, "java/lang/String");&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jstring strencode = (*env)-&amp;gt;NewStringUTF(env, "utf-8");&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jmethodID mid = (*env)-&amp;gt;GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B");&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbyteArray barr= (jbyteArray)(*env)-&amp;gt;CallObjectMethod(env, jstr, mid, strencode);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsize alen = (*env)-&amp;gt;GetArrayLength(env, barr);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbyte* ba = (*env)-&amp;gt;GetByteArrayElements(env, barr, JNI_FALSE);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (alen &amp;gt; 0)&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rtn = (char*)malloc(alen + 1);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(rtn, ba, alen);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rtn[alen] = 0;&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*env)-&amp;gt;ReleaseByteArrayElements(env, barr, ba, 0);&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rtn;&lt;/span&gt;&lt;br style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /&gt;&lt;span style="font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "&gt;}&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;font face="Tahoma" size="3"&gt;&lt;span style="line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;很多方法可以参考jni.h&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;搜索到这个人的博客，总结的不错&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/4557851" style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI的提高，Java类型和C(C++)类型转换源代码&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/4557851"&gt;http://blog.csdn.net/ostrichmyself/article/details/4557851&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/5623804" style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI 的多线程&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/popop123/article/details/1511180"&gt;&amp;nbsp;http://blog.csdn.net/popop123/article/details/1511180&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;a href="http://www.cnblogs.com/lknlfy/tag/Android%20NDK%E5%BC%80%E5%8F%91/"&gt;lknlfy的博客&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2512483.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/22/2512483.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html</id><title type="text">AndroidJNI 通过C++调用JAVA</title><summary type="text">1. JNIEnv对象 对于本地函数 JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj) { cout&lt;&lt;"Hello Native Test !"&lt;&lt;endl; } JNIEnv类型代表Java环境。通过这个JNIEnv*指针，就可以对Java端的代码进行操作。如，创建Java类得对象，调用Java对象的方法，获取Java对象的属性等。 JNIEnv的指针会被JNI传送到本地方法的实现函数中来对Java端的代码进行操作 JNIEnv类中的</summary><published>2012-05-21T15:47:00Z</published><updated>2012-05-21T15:47:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html"/><content type="html">&lt;div&gt;&lt;strong style="color: red; font-size: 12pt; "&gt;1. JNIEnv对象&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; 对于本地函数&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp;JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, jobject obj)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp;{ &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; cout&amp;lt;&amp;lt;"Hello Native Test !"&amp;lt;&amp;lt;endl; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp;} &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; JNIEnv类型代表Java环境。通过这个JNIEnv*指针，就可以对Java端的代码进行操作。如，创建Java类得对象，调用Java对象的方法，获取Java对象的属性等。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JNIEnv的指针会被JNI传送到本地方法的实现函数中来对Java端的代码进行操作&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;JNIEnv类中的函数：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong style="font-size: 12pt; "&gt;NewObject/NewString/New&amp;lt;TYPE&amp;gt;Array&lt;/strong&gt; &amp;nbsp;：new新对象&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;strong style="font-size: 12pt; "&gt;&amp;nbsp;Get/Set&amp;lt;TYPE&amp;gt;Field&lt;/strong&gt;：获取属性&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;strong style="font-size: 12pt; "&gt;&amp;nbsp;Get/SetStatic&amp;lt;TYPE&amp;gt;Field&lt;/strong&gt; ：获取静态属性&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong style="font-size: 12pt; "&gt;Call&amp;lt;TYPE&amp;gt;Method/CallStatic&amp;lt;TYPE&amp;gt;Method&lt;/strong&gt;：调用方法&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="color: red; font-size: 12pt; "&gt;&lt;strong&gt;2. Java数据类型与C/C++数据类型的对应关系&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt; 可以参考 &lt;/span&gt;&lt;a href="http://home.pacifier.com/~mmead/jni/cs510ajp/jni.h"&gt;&lt;span style="font-size: 12pt; "&gt;jni.h&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 12pt; "&gt; 文件：http://home.pacifier.com/~mmead/jni/cs510ajp/jni.h&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="font-size: 12pt; "&gt;Java类型&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;别名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C++本地类型 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;字节(bit)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; "&gt;boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jboolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;char&lt;/span&gt; &amp;nbsp; &amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;8&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;,&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;byte&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jbyte &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; signed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;char&lt;/span&gt; &amp;nbsp;&amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;char&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jchar &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;short&lt;/span&gt; &amp;nbsp;&amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;16&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;,&amp;nbsp;unsigned&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;short&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jshort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;short&lt;/span&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;long&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;long&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jlong &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; __int64&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080; font-size: 12pt; "&gt;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;float&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jfloat&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;float&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;/span&gt;&lt;span style="color: #800080; font-size: 12pt; "&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;double&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jdouble &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;double&lt;/span&gt;　 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #800080; font-size: 12pt; "&gt;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;void&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;void&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; n/a&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 12pt; "&gt;Object&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_jobject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*jobject &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong style="color: red; font-size: 12pt; "&gt;3. 获取jclass&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 为了能够在C/C++使用Java类，jni.h头文件中专门定义了jclass类型来表示Java中的Class类&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jclass的取得：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; JNIEnv类中有如下几个简单的函数可以取得jclass&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jclass FindClass(const char* clsName) &amp;nbsp;根据类名来查找一个类，完整类名。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jclass GetObjectClass(jobject obj) &amp;nbsp; 根据一个对象，获取该对象的类&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jclass GetSuperClass(jclass obj) &amp;nbsp; &amp;nbsp; 获取一个类的父类&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; FindClass 会在classpath系统环境变量下寻找类，需要传入完整的类名，注意包与包之间是用"/"而不是"."来分割&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;如：jclass cls_string= env-&amp;gt;FindClass("java/lang/String");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;获取jclass又什么用，比如你要调用类的静态方法，静态属性就需要通过这个方法来获取一个类。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong style="color: red; font-size: 12pt; "&gt;4. 本地代码访问Java类中的属性与方法&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;有了类和对象之后，如何才能访问java中的对象的属性和方法呢，这就需要用到以下这些方法了。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;JNI在jni.h头文件中定义了jfieldID，jmethodID类表示Java端的属性和方法&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;如何获取属性： 在访问或设置Java属性的时候，首先就要现在本地代码中取得代表Java属性的jfieldID，然后才能在本地代码中进行Java属性操作。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;如何调用java的方法：调用Java端的方法时，需要取得代表方法的jmethodID才能进行Java方法调用&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;JNIEnv获取相应的fieldID和jmethodID的方法：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; GetFieldID/GetMethodID&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; GetStaticFieldID/GetStaticMethodID&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; GetMethodID也可以取得构造函数的jmethodID。创建Java对象时调用指定的构造函数。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 如：env-&amp;gt;GetMethodID(data_Clazz,"method_name","()V")&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; (*jniEnv)-&amp;gt;GetMethodID(jniEnv, Clazz,"&amp;lt;init&amp;gt;", "()V");&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 这个比较特殊，这个是默认构造函数的方法，一般用这个来初始化对象，但是再实际过程中，为了快速生成一个实例，一般通过工厂方法类创建jobject&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jni.h 对GetMethodID的定义：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; jmethodID (JNICALL *GetMethodID)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (JNIEnv *env, jclass clazz, const char *name, const char *sig);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 这就引入了一个新的问题，什么是sig，我们后面再说，举个例子说明&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp; &amp;nbsp; 前提说明： JAVA类 &lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&lt;strong&gt;TestProvider &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;,该类有2个方法分别为&lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&lt;strong&gt;String getTime( )&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt; , &lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;void saysayHello( String str)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;jclass&amp;nbsp;TestProvider;&lt;br /&gt;jobject&amp;nbsp;mTestProvider;&lt;br /&gt;jmethodID&amp;nbsp;getTime;&lt;br /&gt;jmethodID&amp;nbsp;sayHello;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong style="font-size: 12pt; "&gt;C 中映射类&lt;/strong&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;TestProvider&amp;nbsp;=&amp;nbsp;(*jniEnv)-&amp;gt;FindClass(jniEnv,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;com/duicky/TestProvider&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong style="font-size: 12pt; "&gt;C中新建对象&lt;/strong&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;默认构造函数，不传参数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmethodID&amp;nbsp;construction_id&amp;nbsp;=&amp;nbsp;(*jniEnv)-&amp;gt;GetMethodID(jniEnv,&amp;nbsp;TestProvider,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;init&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;()V&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;通过NewObject来创建对象&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jobject&amp;nbsp;mTestProvider&amp;nbsp;=&amp;nbsp;(*jniEnv)-&amp;gt;NewObject(jniEnv,&amp;nbsp;TestProvider,construction_id);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong style="font-size: 12pt; "&gt;C 中映射方法&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;静态：&lt;br /&gt;getTime&amp;nbsp;=&amp;nbsp;(*jniEnv)-&amp;gt;GetStaticMethodID(jniEnv,&amp;nbsp;TestProvider,&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;getTime&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;()Ljava/lang/String;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非静态：&lt;br /&gt;sayHello&amp;nbsp;=&amp;nbsp;(*jniEnv)-&amp;gt;GetMethodID(jniEnv,&amp;nbsp;TestProvider,&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;sayHello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;(Ljava/lang/String;)V&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;C 中调用 Java的 方法&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;静态：&lt;br /&gt;(*jniEnv)-&amp;gt;CallStaticObjectMethod(jniEnv,&amp;nbsp;TestProvider,&amp;nbsp;getTime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非静态：&lt;br /&gt;(*jniEnv)-&amp;gt;CallVoidMethod(jniEnv,&amp;nbsp;mTestProvider,&amp;nbsp;sayHello,jstrMSG);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;注意 &lt;/span&gt;&lt;span style="color: #ff0000; font-size: 12pt; "&gt;Get&lt;/span&gt;&lt;strong style="color: #000000; font-size: 12pt; "&gt;XXX&lt;/strong&gt;&lt;span style="color: #ff0000; "&gt;MethodID&lt;/span&gt; &amp;nbsp;和 &lt;span style="color: #ff0000; "&gt;Call&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;strong&gt;XXX&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #ff0000; "&gt;Method 。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;第一个XXX 表示的是映射方法的类型，如： 静态 跟非静态&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;第二个 XXX 表示 调用方法的返回值 ，如：Void,Object,等等。（调用静态方法的时候Call后面要加Static）&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong style="color: #ff0000; font-size: 12pt; "&gt;&amp;nbsp; 5. sign签名&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 对于&lt;strong&gt; jmethodID GetMethodID(jclass clazz, const char *name, const char *sign)&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;clazz代表该属性所在的类，name表示方法名称，sign是签名&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 那什么是签名，签名是对函数参数和返回值的描述，对同一个函数，在java中允许重载，这个时候就需要这个sign来进行区分了。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; 以下是java类型签名的描述&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;用来表示要取得的属性/方法的类型 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;类型 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 相应的签名&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; "&gt;boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Z&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;byte&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;B&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;char&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;short&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; S&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;long&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;L&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;float&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; F&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;double&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;D&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;void&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;V&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;object&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;L用/分隔包的完整类名：&amp;nbsp;&amp;nbsp;&amp;nbsp;Ljava/lang/String;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; "&gt;Array &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[签名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[I&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Ljava/lang/Object;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; "&gt;Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(参数1类型签名&amp;nbsp;参数2类型签名&amp;#183;&amp;#183;&amp;#183;)返回值类型签名 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #ff0000; font-size: 12pt; "&gt;&lt;strong&gt;特别注意：Object后面一定有分号（；）结束的,多个对象参数中间也用分号(;)来分隔&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;例子：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;方法&lt;/span&gt;&lt;span style="white-space: pre; font-size: 12pt; "&gt;签名&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;void&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;f1() &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ()V&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;f2(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;long&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (IJ)I&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; "&gt;boolean&amp;nbsp;f3(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;[]) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ([I)B&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;double&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;f4(String,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Ljava/lang/String;I)D&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;void&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;f5(&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;int&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;,&amp;nbsp;String&amp;nbsp;[],&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 12pt; "&gt;char&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(I[Ljava/lang/String;C)V&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;图解签名：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/likwo/jnisign.jpg" width="402" height="108" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;strong&gt;使用javap命令来产生签名&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp;javap -s -p [full class Name]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-s 表示输出签名信息&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-p 同-private,输出包括private访问权限的成员信息&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&amp;nbsp;例子：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;C:\E\java\workspaces\myeclipseblue\JNITest\bin&amp;gt;javap&amp;nbsp;-s&amp;nbsp;-&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&amp;nbsp;video1.TestNative&amp;nbsp;&amp;nbsp;&lt;br /&gt;Compiled&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;TestNative.java&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;video1.TestNative&amp;nbsp;extends&amp;nbsp;java.lang.Object{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;java.lang.String&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Signature:&amp;nbsp;Ljava/lang/String;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;video1.TestNative();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Signature:&amp;nbsp;()V&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;signTest(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;,&amp;nbsp;java.util.Date,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;[]);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Signature:&amp;nbsp;(ILjava/util/Date;[I)I&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;native&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;sayHello();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Signature:&amp;nbsp;()V&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;main(java.lang.String[]);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Signature:&amp;nbsp;([Ljava/lang/String;)V&amp;nbsp;&amp;nbsp;&lt;br /&gt;} &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 16px; line-height: 24px; "&gt;TestNative&lt;/span&gt;&lt;span style="font-size: 12pt; "&gt;完整代码：&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;font size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;package&lt;/span&gt;&amp;nbsp;video1;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt;&amp;nbsp;java.util.Date;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;TestNative&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;String&amp;nbsp;name="Test";&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;number&amp;nbsp;=100;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;signTest(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;i,Date&amp;nbsp;date,&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;[]&amp;nbsp;arr){&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Sign&amp;nbsp;Test");&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;0;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;native关键字修饰的方法，其内容是C/C++编写的，java中不必为它编写具体的实现&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;native&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;sayHello();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.loadLibrary("NativeCode");&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestNative&amp;nbsp;tn&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;TestNative();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tn.sayHello();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 12pt; "&gt;C/C++代码&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;#include&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;video1_TestNative.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;#include&amp;nbsp;&amp;lt;iostream&amp;gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&amp;nbsp;std;&amp;nbsp;&amp;nbsp;&lt;br /&gt;JNIEXPORT&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;JNICALL&amp;nbsp;Java_video1_TestNative_sayHello(JNIEnv&amp;nbsp;*&amp;nbsp;env,&amp;nbsp;jobject&amp;nbsp;obj){&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&amp;nbsp;Native&amp;nbsp;Test&amp;nbsp;!&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;lt;&amp;lt;endl;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;因为test不是静态函数，所以传进来的就是调用这个函数的对象&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;否则就传入一个jclass对象表示native()方法所在的类&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jclass&amp;nbsp;native_clazz&amp;nbsp;=&amp;nbsp;env-&amp;gt;GetObjectClass(obj);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;得到jfieldID&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jfieldID&amp;nbsp;fieldID_prop&amp;nbsp;=&amp;nbsp;env-&amp;gt;GetFieldID(native_clazz,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;name&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Ljava/lang/String;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jfieldID&amp;nbsp;fieldID_num&amp;nbsp;=&amp;nbsp;env-&amp;gt;GetFieldID(native_clazz,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;number&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;I&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;得到jmethodID&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmethodID&amp;nbsp;methodID_func=env-&amp;gt;GetMethodID(native_clazz,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;signTest&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;(ILjava/util/Date;[I)I&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;调用signTest方法&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;env-&amp;gt;CallIntMethod(obj,methodID_func,&lt;span style="color: #800080;"&gt;1L&lt;/span&gt;,NULL,NULL);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;得到name属性&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jobject&amp;nbsp;name&amp;nbsp;=&amp;nbsp;env-&amp;gt;GetObjectField(obj,fieldID_name);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;得到number属性&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jint&amp;nbsp;number=&amp;nbsp;env-&amp;gt;GetIntField(obj,fieldID_num);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;number&amp;lt;&amp;lt;endl;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;100&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;修改number属性的值&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;env-&amp;gt;SetIntField(obj,fieldID_num,&lt;span style="color: #800080;"&gt;18880L&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;number=&amp;nbsp;env-&amp;gt;GetIntField(obj,fieldID_num);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;number&amp;lt;&amp;lt;endl;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;18880&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;} &amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;本文地址，转载请注明出处：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html"&gt;http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;参考资料：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://zzqrj.iteye.com/blog/1285262"&gt;http://zzqrj.iteye.com/blog/1285262&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;jni.h 头文件：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://home.pacifier.com/~mmead/jni/cs510ajp/jni.h"&gt;http://home.pacifier.com/~mmead/jni/cs510ajp/jni.h&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;相关例子：&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://www.pacifier.com/~mmead/jni/cs510ajp/index.html"&gt;http://www.pacifier.com/~mmead/jni/cs510ajp/index.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;Programmming in C/C++ with the Java Native Interface (3 个练习)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://www.pacifier.com/~mmead/jni/cs510ajp/exercises/index.html"&gt;http://www.pacifier.com/~mmead/jni/cs510ajp/exercises/index.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;JNI 文档：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://files.cnblogs.com/luxiaofeng54/JNI_Docs.rar"&gt;http://files.cnblogs.com/luxiaofeng54/JNI_Docs.rar&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;基于 Android NDK 的学习之旅----- C调用Java&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://www.cnblogs.com/bastard/archive/2012/05/17/2506877.html"&gt;http://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;Linux下JNI的使用：比较基础&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://www.cnblogs.com/bastard/archive/2012/05/17/2506877.html"&gt;http://www.cnblogs.com/bastard/archive/2012/05/17/2506877.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;如何在Android下使用JNI：讲解比较详细，但是代码里有些错误，空格没处理好&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://blog.csdn.net/xnwyd/article/details/7086384"&gt;http://blog.csdn.net/xnwyd/article/details/7086384&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;这篇文章有些地方不清楚的参考下这篇文章&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;Android Jni代码示例讲解&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;a href="http://developer.51cto.com/art/201001/181355.htm"&gt;http://developer.51cto.com/art/201001/181355.htm&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://unity3d.com/support/documentation/ScriptReference/AndroidJNI.CallIntMethod.html"&gt;JNI callMethod参考文档&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 18pt; "&gt;其他推荐学习网站&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/4557851" style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; "&gt;JNI的提高，Java类型和C(C++)类型转换源代码&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/4557851" style="color: navy; text-decoration: none; "&gt;http://blog.csdn.net/ostrichmyself/article/details/4557851&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/ostrichmyself/article/details/5623804" style="color: #000000; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; "&gt;JNI 的多线程&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/popop123/article/details/1511180" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.4; color: navy; text-decoration: none; "&gt;&amp;nbsp;http://blog.csdn.net/popop123/article/details/1511180&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lknlfy/tag/Android%20NDK%E5%BC%80%E5%8F%91/"&gt;Android NDK 开发&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;strong&gt;使用 Java Native Interface 的最佳实践：描述了JNI性能和缓存的一些东西&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.ibm.com/developerworks/cn/java/j-jni/"&gt;&amp;nbsp;https://www.ibm.com/developerworks/cn/java/j-jni/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;JNI 攻略系列&lt;/p&gt;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006260" style="color: #333333; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI全攻略之一－－建立一个简单的JNI程序&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006260"&gt;http://blog.csdn.net/yjkwf/article/details/7006260&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006261" style="color: #333333; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI全攻略之二&amp;#8213;&amp;#8213;JNI基础&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006261"&gt;http://blog.csdn.net/yjkwf/article/details/7006261&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006264" style="color: #333333; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI全攻略之三－－JNI头文件分析&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006264"&gt;http://blog.csdn.net/yjkwf/article/details/7006264&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006266" style="color: #333333; text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; text-align: left; background-color: #ffffff; "&gt;JNI攻略之四&amp;#8213;&amp;#8213;JNI操作数组&lt;/a&gt;&lt;/p&gt;&lt;a href="http://blog.csdn.net/yjkwf/article/details/7006266"&gt;http://blog.csdn.net/yjkwf/article/details/7006266&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2512400.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/20/2510654.html</id><title type="text">Xcode 4.2 编译 ios5.1</title><summary type="text">To get Xcode 4.2 on Snow Leopard to run code on a device running 5.1 you can do this:If you have another Mac running Lion + XCode 4.3.1 you can copy the files from:"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)"to the equivalent place on y</summary><published>2012-05-20T09:02:00Z</published><updated>2012-05-20T09:02:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/20/2510654.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/20/2510654.html"/><content type="html">&lt;p&gt;To get Xcode 4.2 on Snow Leopard to run code on a device running 5.1 you can do this:&lt;/p&gt;&lt;p&gt;If you have another Mac running Lion + XCode 4.3.1 you can copy the files from:&lt;/p&gt;&lt;p&gt;"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)"&lt;/p&gt;&lt;p&gt;to the equivalent place on your SL Mac: probably "/Developer/Platforms/iPhoneOS.platform/DeviceSupport"&lt;/p&gt;&lt;p&gt;and also copy 'version.plist' from the Lion machine in the iPhoneOS.platform folder to the SL machine.&lt;/p&gt;&lt;p&gt;Re-start XCode on the SL machine and re-connect the devices and it seems happy enough.&lt;/p&gt;&lt;p&gt;[Edit: If you don't have access to a machine with Lion+4.3.1 you can get the files out of the 4.3.1 DMG which can be downloaded from Apple here:&lt;a href="http://adcdownload.apple.com/Developer_Tools/xcode_4.3.1_for_lion/xcode_4.3.1_for_lion.dmg" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #4a6b82; text-decoration: none; cursor: pointer; "&gt;http://adcdownload.apple.com/Developer_Tools/xcode_4.3.1_for_lion/xcode_4.3.1_for_lion.dmg&lt;/a&gt;&lt;/p&gt;&lt;p&gt;then mount the DMG, Show Package Contents on the XCode icon and drill down to&lt;/p&gt;&lt;p&gt;/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport to&lt;/p&gt;&lt;p&gt;find the files mentioned above.]&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转http://stackoverflow.com/questions/9614918/xcode-4-2-snow-leopard-and-ios-5-1&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2510654.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/20/2510654.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/19/2509168.html</id><title type="text">mac 10.6 webkit编译</title><summary type="text">按照教程，编译比较顺利，但是有些地方，还是有些地方还是需要，主要是官方文档写的不全：1. 脚本目录，在Tools/Scripts 目录2. 如果使用的是build-webkit --debug 的方式编译 ，需要使用 run-safari --debug 不然会出现如下错误：Can't find built framework at "/wjhsource/webkit/WebKit-r117602/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore".3. Xcode编译注意</summary><published>2012-05-19T12:42:00Z</published><updated>2012-05-19T12:42:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/19/2509168.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/19/2509168.html"/><content type="html">&lt;p&gt;按照教程，编译比较顺利，但是有些地方，还是有些地方还是需要，主要是官方文档写的不全：&lt;/p&gt;&lt;p&gt;&lt;strong style="color: red; "&gt;1. 脚本目录，在Tools/Scripts 目录&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;strong style="color: red; "&gt;2. 如果使用的是build-webkit --debug 的方式编译 ，需要使用 run-safari --debug&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; 不然会出现如下错误：&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp;Can't find built framework at "/wjhsource/webkit/WebKit-r117602/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore".&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3. Xcode编译注意事项&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;http://www.cocoachina.com/bbs/simple/?t20740.html&lt;/div&gt;&lt;p&gt;这里有一个分享，但是这个xcode的版本比较旧，我使用的是xcode 4.2 .好像不太好用。&lt;/p&gt;&lt;p&gt;//下面我的设置，编译成功：&lt;/p&gt;&lt;p&gt;//Build Products path 修改为WebKitBuild (默认为Build)&amp;nbsp;&lt;/p&gt;&lt;p&gt;File ----&amp;gt; WorkSpaceSetting --&amp;gt; Custom 选择在command模式的webkitbuild目录 如：/webkit/WebKit-r117602/WebKitBuild&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2509168.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/19/2509168.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/17/2506282.html</id><title type="text">Const，Const函数，Const变量，函数后面的Const (zz)</title><summary type="text">看到const 关键字，C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量，那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值，甚至函数的定义体。const 是constant 的缩写，“恒定不变”的意思。被const 修饰的东西都受到强制保护，可以预防意外的变动，能提高程序的健壮性。所以很多C++程序设计书籍建议：“Use const whenever you need”。1.用const 修饰函数的参数如果参数作输出用，不论它是什么数据类型，也不论它采用“指针传递”还是“引用传递”，都不能加const 修</summary><published>2012-05-17T07:14:00Z</published><updated>2012-05-17T07:14:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/17/2506282.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/17/2506282.html"/><content type="html">&lt;p&gt;看到const 关键字，C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量，那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的参数、返回值，甚至函数的定义体。&lt;/p&gt;&lt;p&gt;const 是constant 的缩写，&amp;#8220;恒定不变&amp;#8221;的意思。被const 修饰的东西都受到强制保护，可以预防意外的变动，能提高程序的健壮性。所以很多C++程序设计书籍建议：&amp;#8220;Use const whenever you need&amp;#8221;。&lt;/p&gt;&lt;p&gt;1.用const 修饰函数的参数&lt;/p&gt;&lt;p&gt;如果参数作输出用，不论它是什么数据类型，也不论它采用&amp;#8220;指针传递&amp;#8221;还是&amp;#8220;引用传递&amp;#8221;，都不能加const 修饰，否则该参数将失去输出功能。const 只能修饰输入参数：&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;strong&gt;如果输入参数采用&amp;#8220;指针传递&amp;#8221;，那么加const 修饰可以防止意外地改动该指针，起到保护作用。&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;例如StringCopy 函数：&lt;/p&gt;&lt;p&gt;void StringCopy(char *strDestination, const char *strSource);&lt;/p&gt;&lt;p&gt;其中strSource 是输入参数，strDestination 是输出参数。给strSource 加上const修饰后，&lt;strong&gt;&lt;u&gt;如果函数体内的语句试图改动&lt;/u&gt;&lt;/strong&gt;&lt;strong&gt;&lt;u&gt;strSource 的内容，编译器将指出错误。&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果输入参数采用&amp;#8220;值传递&amp;#8221;，由于函数将自动产生临时变量用于复制该参数，该输入参数本来就无需保护，所以不要加const 修饰。&lt;/p&gt;&lt;p&gt;例如不要将函数void Func1(int x) 写成void Func1(const int x)。同理不要将函数void Func2(A a) 写成void Func2(const A a)。其中A 为用户自定义的数据类型。&lt;/p&gt;&lt;p&gt;对于非内部数据类型的参数而言，象void Func(A a) 这样声明的函数注定效率比较底。因为函数体内将产生A 类型的临时对象用于复制参数a，而临时对象的构造、复制、析构过程都将消耗时间。&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;strong&gt;为了提高效率，可以将函数声明改为void Func(A &amp;amp;a)，因为&amp;#8220;引用传递&amp;#8221;仅借用一下参数的别名而已，不需要产生临时对象。但是函数void Func(A &amp;amp;a) 存在一个缺点：&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&amp;#8220;引用传递&amp;#8221;有可能改变参数a，这是我们不期望的。解决这个问题很容易，加const修饰即可，因此函数最终成为void Func(const A &amp;amp;a)。&lt;/p&gt;&lt;p&gt;以此类推，是否应将void Func(int x) 改写为void Func(const int &amp;amp;x)，以便提高效率？完全没有必要，因为内部数据类型的参数不存在构造、析构的过程，而复制也非常快，&amp;#8220;值传递&amp;#8221;和&amp;#8220;引用传递&amp;#8221;的效率几乎相当。&lt;/p&gt;&lt;p&gt;问题是如此的缠绵，我只好将&amp;#8220;const &amp;amp;&amp;#8221;修饰输入参数的用法总结一下。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;对于非内部数据类型的输入参数，应该将&amp;#8220;值传递&amp;#8221;的方式改为&amp;#8220;const 引用传递&amp;#8221;，目的是提高效率。例如将void Func(A a) 改为void Func(const A &amp;amp;a)。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&lt;p&gt;对于内部数据类型的输入参数，不要将&amp;#8220;值传递&amp;#8221;的方式改为&amp;#8220;const 引用传递&amp;#8221;。否则既达不到提高效率的目的，又降低了函数的可理解性。例如void Func(int x) 不应该改为void Func(const int &amp;amp;x)。&lt;/p&gt;&lt;p&gt;2 用const 修饰函数的返回值&lt;br /&gt;如果给以&amp;#8220;指针传递&amp;#8221;方式的函数返回值加const 修饰，那么函数返回值（即指针）的内容不能被修改，&lt;strong&gt;&lt;u&gt;该返回值只能被赋给加const 修饰的同类型指针。例如函数&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;const char * GetString(void);&lt;br /&gt;如下语句将出现编译错误：&lt;br /&gt;char *str = GetString();&lt;br /&gt;正确的用法是&lt;br /&gt;const char *str = GetString();&lt;br /&gt;如果函数返回值采用&amp;#8220;值传递方式&amp;#8221;，由于函数会把返回值复制到外部临时的存储单元中，加const 修饰没有任何价值。&lt;br /&gt;例如不要把函数int GetInt(void) 写成const int GetInt(void)。&lt;br /&gt;同理不要把函数A GetA(void) 写成const A GetA(void)，其中A 为用户自定义的数据类型。&lt;br /&gt;如果返回值不是内部数据类型，将函数A GetA(void) 改写为const A &amp;amp; GetA(void)的确能提高效率。但此时千万千万要小心，一定要搞清楚函数究竟是想返回一个对象的&amp;#8220;拷贝&amp;#8221;还是仅返回&amp;#8220;别名&amp;#8221;就可以了，否则程序会出错。&lt;br /&gt;函数返回值采用&amp;#8220;引用传递&amp;#8221;的场合并不多，这种方式一般只出现在类的赋值函数中，目的是为了实现链式表达。&lt;/p&gt;&lt;p&gt;例如：&lt;br /&gt;class A&lt;br /&gt;{&lt;br /&gt;A &amp;amp; operate = (const A &amp;amp;other); // 赋值函数&lt;br /&gt;};&lt;br /&gt;A a, b, c; // a, b, c 为A 的对象&lt;br /&gt;&lt;br /&gt;a = b = c; // 正常的链式赋值&lt;br /&gt;(a = b) = c; // 不正常的链式赋值，但合法&lt;br /&gt;如果将赋值函数的返回值加const 修饰，那么该返回值的内容不允许被改动。上例中，语句 a = b = c 仍然正确，但是语句 (a = b) = c 则是非法的。&lt;br /&gt;3 const 成员函数&lt;br /&gt;任何不会修改数据成员的函数都应该声明为const 类型。如果在编写const 成员函数时，不慎修改了数据成员，或者调用了其它非const 成员函数，编译器将指出错误，这无疑会提高程序的健壮性。以下程序中，类stack 的成员函数GetCount 仅用于计数，从逻辑上讲GetCount 应当为const 函数。编译器将指出GetCount 函数中的错误。&lt;br /&gt;class Stack&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;void Push(int elem);&lt;br /&gt;int Pop(void);&lt;br /&gt;int GetCount(void) const; // const 成员函数&lt;br /&gt;private:&lt;br /&gt;int m_num;&lt;br /&gt;int m_data[100];&lt;br /&gt;};&lt;br /&gt;int Stack::GetCount(void) const&lt;br /&gt;{&lt;br /&gt;++ m_num; // 编译错误，企图修改数据成员m_num&lt;br /&gt;Pop(); // 编译错误，企图调用非const 函数&lt;br /&gt;return m_num;&lt;br /&gt;}&lt;br /&gt;const 成员函数的声明看起来怪怪的：const 关键字只能放在函数声明的尾部，大概是因为其它地方都已经被占用了。&lt;br /&gt;关于Const函数的几点规则：&lt;br /&gt;&lt;br /&gt;a. const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.&lt;br /&gt;b. const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.&lt;br /&gt;c. const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查.&lt;br /&gt;e. 然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的const成员函数是可以修改它的&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转&lt;a href="http://www.cnblogs.com/Fancyboy2004/archive/2008/12/23/1360810.html"&gt;http://www.cnblogs.com/Fancyboy2004/archive/2008/12/23/1360810.html&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2506282.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/17/2506282.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/17/2505763.html</id><title type="text">android adb shell 命令大全</title><summary type="text">1. 显示系统中全部Android平台： android list targets2. 显示系统中全部AVD（模拟器）： android list avd3. 创建AVD（模拟器）： android create avd --name 名称 --target 平台编号4. 启动模拟器： emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)5. 删除AVD（模拟器）： android delete avd --name 名称6. 创建SDCard： mksdcard 1024M ~/名称.img7. AVD(模拟器)所在位置： Linux(~/.a</summary><published>2012-05-17T01:37:00Z</published><updated>2012-05-17T01:37:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/17/2505763.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/17/2505763.html"/><content type="html">&lt;p&gt;&lt;strong style="color: red; "&gt;1. 显示系统中全部Android平台：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android list targets&lt;/p&gt;&lt;p&gt;&lt;strong style="color: red; "&gt;2. 显示系统中全部AVD（模拟器）：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android list avd&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;3. 创建AVD（模拟器）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android create avd --name 名称 --target 平台编号&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;4. 启动模拟器：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;5. 删除AVD（模拟器）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android delete avd --name 名称&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;6. 创建SDCard：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mksdcard 1024M ~/名称.img&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;7. AVD(模拟器)所在位置：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Linux(~/.android/avd)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows(C:\Documents and Settings\Administrator\.android\avd)&lt;/p&gt;&lt;p&gt;8. 启动DDMS：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ddms&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;9. 显示当前运行的全部模拟器：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb devices&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;10. 对某一模拟器执行命令：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; abd -s 模拟器编号 命令&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;11. 安装应用程序：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb install -r 应用程序.apk&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;12. 获取模拟器中的文件：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb pull &amp;lt;remote&amp;gt; &amp;lt;local&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;13. 向模拟器中写文件：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb push &amp;lt;local&amp;gt; &amp;lt;remote&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;14. 进入模拟器的shell模式：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;15. 启动SDK，文档，实例下载管理器：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;16. 缷载apk包：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cd data/app&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm apk包&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb uninstall apk包的主包名&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb install -r apk包&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;17. 查看adb命令帮助信息：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb help&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;18. 在命令行中查看LOG信息：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb logcat -s 标签名&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;19. adb shell后面跟的命令主要来自：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;20. 删除系统应用：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb remount （重新挂载系统分区，使系统分区重新可写）。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cd system/app&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm *.apk&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;21. 获取管理员权限：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;adb remount&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb root&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;22. 启动Activity：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell am start -n 包名/包名＋类名（-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等）。&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;23、发布端口：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 你可以设置任意的端口号，做为主机向模拟器或设备的请求端口。如：&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;adb forward tcp:5555 tcp:8000&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;24、复制文件：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 你可向一个设备或从一个设备中复制文件，&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 复制一个文件或目录到设备或模拟器上：&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp; adb push &amp;lt;source&amp;gt; &amp;lt;destination&amp;gt;&amp;lt;/destination&amp;gt;&amp;lt;/source&amp;gt;&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如：adb push test.txt /tmp/test.txt&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 从设备或模拟器上复制一个文件或目录：&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb pull &amp;lt;source&amp;gt; &amp;lt;destination&amp;gt;&amp;lt;/destination&amp;gt;&amp;lt;/source&amp;gt;&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如：adb pull /addroid/lib/libwebcore.so .&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;25、搜索模拟器/设备的实例：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 取得当前运行的模拟器/设备的实例的列表及每个实例的状态：&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb devices&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;26、查看bug报告：&amp;nbsp;&lt;/span&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;adb bugreport&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;span style="color: red; "&gt;27、记录无线通讯日志：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般来说，无线通讯的日志非常多，在运行时没必要去记录，但我们还是可以通过命令，设置记录：&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logcat -b radio&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;28、获取设备的ID和序列号：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb get-product&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb get-serialno&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;29、访问数据库SQLite3&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adb shell&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqlite3&lt;/p&gt;&lt;p&gt;#cd system/sd/data //进入系统内指定文件夹&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#ls //列表显示当前文件夹内容&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#rm xxx //删除文件xxx&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#rmdir xxx //删除xxx的文件夹&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;30.&amp;nbsp;&lt;/span&gt;&lt;span style="color: red; "&gt;Log方法：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; adb Log过滤：&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;/span&gt;1. 只显示需要的输出，白名单&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;/span&gt;最方便的当然是通过管道使用 grep 过滤了，这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串，例如 &amp;nbsp; &amp;nbsp;MyApp：&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;adb logcat | grep MyApp&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;adb logcat | grep -i myapp #忽略大小写。&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;保存log&lt;/div&gt;&lt;div&gt;&amp;nbsp; 使用-d参数，可以在读完所有log后返回，而不会一直等待，在自动化较有用。例如：&lt;/div&gt;&amp;nbsp; adb logcat -d -s xxx &amp;gt; xxx.log //得到filter为xxx的日志，存入xxx.log，然后返回。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转&lt;a href="http://www.cnblogs.com/acpb/archive/2011/05/24/2056026.html"&gt;http://www.cnblogs.com/acpb/archive/2011/05/24/2056026.html&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2505763.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/17/2505763.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/likwo/archive/2012/05/16/2504392.html</id><title type="text">ubuntu10.0.4 android2.2 编译总结</title><summary type="text">1. 系统：buntu 10.04 64位2.安装好 eclipse 和 JDK 1.5 之后编译 android 2.2 froyo3.安装前最好check官网的环境准备 。 http://source.android.com/source/initializing.html比较重要的是如下一步：Installing required packages (Ubuntu 10.04 -- 11.10)#########################sudo apt-get install git-core gnupg flex bison gperf build-essential \ zi</summary><published>2012-05-16T09:39:00Z</published><updated>2012-05-16T09:39:00Z</updated><author><name>Likwo</name><uri>http://www.cnblogs.com/likwo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/likwo/archive/2012/05/16/2504392.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/likwo/archive/2012/05/16/2504392.html"/><content type="html">&lt;div&gt;&lt;strong style="font-size: 12pt; "&gt;1. 系统：buntu 10.04 64位&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;&lt;strong&gt;2.安装好 eclipse 和 JDK 1.5 &amp;nbsp;之后编译 android 2.2 froyo&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.安装前最好check官网的环境准备 。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;a href="http://source.android.com/source/initializing.html"&gt;http://source.android.com/source/initializing.html&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: red; "&gt;比较重要的是如下一步：&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt; "&gt;Installing required packages (Ubuntu 10.04 -- 11.10)&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;#########################&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp;sudo apt-get install git-core gnupg flex bison gperf build-essential \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp; zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp; x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp; libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; color: red; "&gt;&amp;nbsp; libxml2-utils xsltproc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;#########################&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. 环境配置好后&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;进入froyo目录&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Lucida Console', Monaco, monospace; background-color: #fafafa; color: #007000; font-size: 13px; line-height: normal; "&gt;$ source build/envsetup.sh&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Lucida Console', Monaco, monospace; background-color: #fafafa; color: #007000; font-size: 13px; line-height: normal; "&gt;$ make -j4&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;如果还有错的话，参考下面的更新，或者google&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get update&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install ia32-libs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install flex&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install bison&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libncurses5-dev:i386&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libc6-dev-i386&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install lib32z1-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install git&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install g++-multilib &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install gperf&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libx11-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libncurses-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libgl1-mesa-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install zlib1g-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install ib64z1-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install curl&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;---------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;error&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;---------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;Generating CSSPropertyNames.h &amp;lt;= CSSPropertyNames.in&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sh: gperf: not found&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install gperf&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/skin/window.o] Error 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;###############################&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libx11-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;###############################&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] E&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;###############################&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;sudo apt-get install libncurses-dev&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 12pt; "&gt;###############################&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/likwo/aggbug/2504392.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/likwo/archive/2012/05/16/2504392.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
