直接调吗?应该有些前期的配置吧,还有dll和so都可以调吗?最好给个简单的例子
解决方案 »
- Android牟利之道(一)--界面嵌入有米广告
- SQLite 创建数据库问题
- Android机器如何局域网访问sqlite数据库
- android 生成dex问题
- android 2.2 kernel(2.6.32) 到 android 4.0 kernel(3.0) kernel可以不升级么?
- ? - ProgressDialog的方法setProgress(int)
- 你们公司开发android都是用Java吗?
- 把SOCKET封装在SO库的设计思路请教
- obj文件中F标示行如何操作??
- 请问关于帖子里边的 赞 跟 评论的 显示问题
- 如何设置程序的优先级,防止被杀毒软件清理
- 怎么做才能第二次进入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
链接怎么不通啊?