设为首页 加入收藏

TOP

Android源码中编译自己的so库
2014-11-24 08:24:49 来源: 作者: 【 】 浏览:1
Tags:Android 源码 编译 自己

1 JAVA层的开发


首先给出程序的运行效果图,如下所示:



图1 运行效果截图


在两个输入框中分别输入两个数字(45,35),点击"Confirm"则在上面显示出运算结果(sum = 80)。此过程中,加法操作用C代码实现。整个工程的根目录路径设置如下:



图2 Helloworld根目录


我们需要关注jni目录,此目录下包含着C/C++相关的代码。


1.1 MainActivity.java


package com.eton.helloworld;


import android.os.Bundle;


import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {


private TextView tvSum;
private EditText etAdd1;
private EditText etAdd2;
private Button btnConfirm;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


tvSum = (TextView) findViewById(R.id.tv_sum);
etAdd1 = (EditText) findViewById(R.id.et_add1);
etAdd2 = (EditText) findViewById(R.id.et_add2);
btnConfirm = (Button) findViewById(R.id.bt_Confirm);


System.loadLibrary("jnicall");


btnConfirm.setOnClickListener(new View.OnClickListener(){


@Override
public void onClick(View v) {
int add1 = Integer.parseInt(etAdd1.getText().toString());
int add2 = Integer.parseInt(etAdd2.getText().toString());
tvSum.setText("sum = " + add(add1, add2));
}
});


}


public native int add(int add1, int add2);
}


代码29行:显式加载.so类库--libjnicall--我们自己的类库,注意,代码中为"jnicall",对应的是类库libjnicall.so;


代码43行:通过关键字native声明本地函数add,此函数为C/C++实现;


代码37行:调用本地函数add。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu下编译boost 1.52 下一篇Android--实现自制录音/播放录音..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)
·关于 MySQL 数据库学 (2025-12-26 23:20:16)
·SOLVED: Ubuntu 24.0 (2025-12-26 22:51:53)
·Linux 常用命令最全 (2025-12-26 22:51:50)