直接调吗?应该有些前期的配置吧,还有dll和so都可以调吗?最好给个简单的例子
解决方案 »
- 急求答案!高分相送!listview中加载网络数据,显示到三个GridView中
- 新人求教:大家用的什么版本SDK开发的?
- android 在线播放视频如何实现?有哪些方式?
- Android开发入门(欢迎大家参与讨论)
- 麻烦高手帮我看一下,我的模拟器出了INSTALL_FAILED_CONTAINER_ERROR该怎么解决?
- 请问android创建的AVD模拟器 默认的长和宽是多大?
- [武汉]下周就要比赛了,产品的服务器与数据库也开发的差不多了,可是就是找不到一个做客户端开发的。。。
- 如何算土方量
- 请教下android布局的问题
- 5G时代对android开发有什么影响?android系统会被淘汰吗?
- 如何设置程序的优先级,防止被杀毒软件清理
- 怎么做才能第二次进入activity显示上次离开的数据
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.c文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。 首先写好JAVA文件
public class NativeExampleActivity extends Activity {
TextView textView01;
private Button btnStart;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); btnStart = (Button) this.findViewById(R.id.btnStart);
btnStart.setOnClickListener(clickButtonStart);
textView01 = (Button) this.findViewById(R.id.btnStart); }
private OnClickListener clickButtonStart = new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
textView01.setText("4+5="+addFunction(4, 5));
}
};
static {
try {
Runtime.getRuntime().loadLibrary("org_natives_example_NativeExampleActivity");
} catch (Throwable t) {
}
}
public native int addFunction(int a, int b);
}
然后在工程的bin/classes目录下执行javah -jni org.natives.example.NativeExampleActivity, 就会在根目录下得到一个org_natives_example_NativeExampleActivity.h的文件 然后根据头文件的内容编写com_hode_hodeframework_modelupdate_CheckFile.c文件 #include "com_hode_hodeframework_modelupdate_CheckFile.h"
JNIEXPORT jint JNICALL Java_org_natives_example_NativeExampleActivity_addFunction
(JNIEnv *, jobject, jint a, jint b)
{
return (a + b);
}
把c文件编译成ko文件,push到手机的system/lib目录下。就可以了。
用命令cl -LD org_natives_example_NativeExampleActivity.cpp,可以编译成lib,dll,obj文件
找不到android.app.Activity的类文件”
如果进到包里面在javah的话提示“错误: 找不到 'NativeExampleActivity' 的类文件。”
然后代码直接引用System.loadLibrary("xxx");
然后各种public native 方法。。
JNI太复杂了,javah时总有问题,成功过一次,之后就没对过,原理也很难懂。
http://apps.hi.baidu.com/share/detail/31610125
链接怎么不通啊?