1.如何解决android的sdk更新的时候出现联网错误:
更改C:\Windows\System32\drivers\etc 下的hosts文件,添加下面的一句话就可以了。
74.125.237.1 dl-ssl.google.com
2.在按照博文http://blog.csdn.net/sjz_iron/article/details/8614070来建立opencv环境中总是出现运行到c语言的时候出现问题。程序崩溃。
结果是我自己的包名与博文的包名不同而我没有更改c++文件中的包名导致的。对比如下(我自己的包名为:package com.example.test2;,博文的包名为:package com.iron.grayprocess2; )
cpp文件中:上面的为错误的命名,下面没有注释的为正确的命名。
h文件中一样,上面是错误的命名,下面没有注释的为正确的命名
3.今天按照《细说Android 4.0 NDK编程》来做,按照他上面给的第四章的例子来做没有问题:
package com.jia.ndk.hello; public class hello { static { System.loadLibrary("helloAnroidNDK"); } public native String sayHelloToNDK(); public native String test2(); }
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); //System.loadLibrary("native_activity"); //Intent intent = new Intent(CvNativeActivity.this, android.app.NativeActivity.class); //CvNativeActivity.this.startActivity(intent); } break; default: { super.onManagerConnected(status); } break; } } };同样的代码在我的另外一个工程里就运行的好好的,在这个工程里就不行,最后查到的原因是在我从另外一个工程复制代码的时候,Eclipse还复制了一些其他的东西到了新的工程里面,导致同样的代码却一个能运行,一个不行。
4:javah的使用:
今天第一次使用了javah这个命令,感觉还是很有用的,避免了自己写h文件时候容易抄错的危险。使用的截图如下所示:
(1)是javah的完整路径(当然自己配一下path路径也可以,我自己的path路径太长了,所以没有配直接写全路径)
(2)(3) -classpath ../bin/classes 这是确定*.CLASS所在的文件夹
(4) -jni com.example.test4.imageproc 这是class的名字,com.example.test4是包名,imageproc是类名。
然后就可以在jni路径下看到生成的h文件了。
5: 在写c++的函数时候:形参必须写名字,否则会出error,即时不用,也要写上。