Ubuntu下第一个Jni例子
来源:互联网 发布:r语言随机生成数据 编辑:程序博客网 时间:2024/05/29 08:29
终端切换到 <sdk>/tools/ 目录下执行 Android 命令就可以把AVD Manager 打开了。 可是,如果你没有添加 <sdk>/tools 到你的环境变量中时,输入 android 回车后终端只会提示你
android:找不到命令
而只要在android前加上 ./ 就可以解决问题:
./android
更简单的办法是将 <sdk>/tools 路径添加进 PATH 环境变量。可以添加进用户级环境变量,也可以添加到系统环境变量中。通过命令或编辑文件均可,在这里我只提供一个办法,打开终端,输入:
sudo gedit /etc/environment
回车,在PATH=”………………….”的双引号中追加上:
:<sdk>/tools:<sdk>/platform-tools
比如:
:/opt/android-sdk/tools:/opt/android-sdk/platform-tools
注意,:是分隔符。
重启一下或者 source /etc/environment(立即生效) 在终端输入 android 回车就会有反应了。
安装Android NDK
下载Android NDK : http://developer.android.com/sdk/ndk/index.html
echo 解压缩得到android-ndk-r6b目录,即可。
tar -jxvf android-ndk-r6b-linux-x86.tar.bz2
也将其路径加入到source路径中
经过了上述步骤,在命令行下敲:
ndk-bulid
弹出如下的错误,而不是说ndk-build not found,就说明ndk环境已经安装成功了。
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/home/braincol/workspace/android/android-ndk-r5/build/core/build-local.mk:85: *** Android NDK: Aborting . Stop.
二、代码的编写
1.首先是写java代码
建立一个Android应用工程HelloJni,创建HelloJni.java文件:
HelloJni.java :
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
com.example.hellojni;
import
android.app.Activity;
import
android.widget.TextView;
import
android.os.Bundle;
public
class
HelloJni extends
Activity
{
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
/* Create a TextView and set its content.
* the text is retrieved by calling a native
* function.
*/
TextView tv = new
TextView(this
);
tv.setText( stringFromJNI() );
setContentView(tv);
}
/* A native method that is implemented by the
* 'hello-jni' native library, which is packaged
* with this application.
*/
public
native
String stringFromJNI();
/* This is another native method declaration that is *not*
* implemented by 'hello-jni'. This is simply to show that
* you can declare as many native methods in your Java code
* as you want, their implementation is searched in the
* currently loaded native libraries only the first time
* you call them.
*
* Trying to call this function will result in a
* java.lang.UnsatisfiedLinkError exception !
*/
public
native
String unimplementedStringFromJNI();
/* this is used to load the 'hello-jni' library on application
* startup. The library has already been unpacked into
* /data/data/com.example.HelloJni/lib/libhello-jni.so at
* installation time by the package manager.
*/
static
{
System.loadLibrary("hello-jni"
);
}
}
这段代码很简单,注释也很清晰,这里只提两点::
static{
System.loadLibrary("hello-jni" );
}
表明程序开始运行的时候会加载hello-jni, static区声明的代码会先于onCreate方法执行。如果你的程序中有多个类,而且如果HelloJni这个类不是你应用程序的入口,那么 hello-jni(完整的名字是libhello-jni.so)这个库会在第一次使用HelloJni这个类的时候加载。
public native String stringFromJNI();
public native String unimplementedStringFromJNI();
可以看到这两个方法的声明中有 native 关键字, 这个关键字表示这两个方法是本地方法,也就是说这两个方法是通过本地代码(C/C++)实现的,在java代码中仅仅是声明。
用eclipse编译该工程,生成相应的.class文件,这步必须在下一步之前完成,因为生成.h文件需要用到相应的.class文件。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-12/49685.htm
- Ubuntu下第一个Jni例子
- ubuntu 下第一个python程序
- ubuntu下第一个java程序
- mac下第一个intellij andriod例子
- ubuntu 下第一个php扩展开发记录
- ubuntu 下第一个php扩展开发记录
- Ubuntu 64 下第一个c语言程序
- Linux(Ubuntu)下第一个C程序(0)
- 【ubuntu操作系统】ubuntu系统下第一个C语言程序
- 一个jni例子
- Ubuntu下第一个C程序的成功运行
- 一个JNI的小例子
- 一个例子掌握JNI开发
- 测试一下第一个
- VS2005下第一个ATL
- 写下第一个字
- Linux下第一个驱动程序
- 学习ThinkPHP3.2.2(一):记录一下第一个例子的运行过程
- Button 动态刷新效果
- java中的多线程
- 贝叶斯分类器--概念
- 分享一个excel导入oracle的方法
- Go语言学习笔记-编译时的pakcage文件目录约束
- Ubuntu下第一个Jni例子
- WebClient 轻松实现文件下载上传、网页抓取
- Android 实现windows文件资源管理器
- db file sequential read等待事件
- yunzhuomian
- event.keyCode - 兼容IE和Firefox
- I Hate It tzc
- tomcat性能优化
- 贝叶斯分类器--文本分类的C语言实现