NDK配置

1.下载最新版本NDK(android-ndk-r9d-linux-x86_64.tar.bz2)

下载网页:http://developer.android.com/tools/sdk/ndk/index.html

2.拷贝下载文件到环境配置目录解压,解压方式

tar -jxvf android-ndk-r9d-linux-x86_64.tar.bz2

3.控制台进入到账户根目录,编辑.bashrc文件(vi .bashrc)

4.新建环境变量(主要最后一个文件夹为ndk解压后的文件夹名)

export NDK_HOME=/home/lchd/work/tools/android-ndk-r9-linux

5.在PATH中添加改环境

export PATH=$PATH:$NDK_HOME:.

6.退出控制台,重新进入控制台

输入 ndk-build 查看错误提示

Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.

出现以上错误,恭喜你,环境配置OK

JNI demo

src源代码结构图

./src

├── ./src/com

│   └── ./src/com/example

│       └── ./src/com/example/testedittext

│           └── ./src/com/example/testedittext/MainActivity.java

└── ./src/jni

└── ./src/jni/helloworld.java

/src/com/example/testedittext/MainActivity.java

package com.example.testedittext;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.Toast; import jni.helloworld; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.loadLibrary("helloworld");
Toast.makeText(this, "xx " + new helloworld().dispHelloWorld(), Toast.LENGTH_SHORT).show();
} @Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

 /src/jni/helloworld.java

package jni;

public class helloworld {
public native String dispHelloWorld();
}

JNI文件目录

├── ./jni

│   ├── ./jni/Android.mk

│   └── ./jni/helloworld.c

/jni/Android.mk

# 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.
#
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := helloworld
LOCAL_SRC_FILES := helloworld.c include $(BUILD_SHARED_LIBRARY)

/jni/helloworld.c

#include <jni.h>
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_jni_helloworld_dispHelloWorld(JNIEnv *env,
jobject obj) {
char* cstr = "helloworld111";
return (**env).NewStringUTF(env, cstr);
}

在项目根目录运行ndk-build 生成以下文件

├── ./libs

│   ├── ./libs/android-support-v4.jar

│   └── ./libs/armeabi

│       └── ./libs/armeabi/libhelloworld.so

├── ./obj

│   └── ./obj/local

│       └── ./obj/local/armeabi

│           ├── ./obj/local/armeabi/libhelloworld.so

│           └── ./obj/local/armeabi/objs

│               └── ./obj/local/armeabi/objs/helloworld

│                   ├── ./obj/local/armeabi/objs/helloworld/helloworld.o

│                   └── ./obj/local/armeabi/objs/helloworld/helloworld.o.d

运行android程序,正确谈出toast xx helloworld111.

Ubuntu NDK配置与JNI demo的更多相关文章

  1. android JNI 简单demo(2)它JNI demo 写

    android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...

  2. Ubuntu TensorFlow 源码 Android Demo的编译运行

    Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...

  3. NDK工具开发Jni,Android studio jni开发

    NDK工具开发JNI 对于JNI的作用,我这边就不详细说明了,百度google 有很多这样的介绍,这边着重详解AS使用NDK工具开发,调C的流程. 1,创建工程 2,创建native方法 //该类的路 ...

  4. Android studio 使用NDK工具实现JNI编程

    前言: Android开发中常常会使用到第三方的.so库.在使用.so库的时候就要用到JNI编程.JNI是Java Native Interface的缩写.它提供了若干的API实现了Java和其它语言 ...

  5. ubuntu下配置apache2多域名(apache2.4.6)

    Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同. 1. 打开目录 /et ...

  6. Eclipse NDK 配置,无需安装Cygwin

    Eclipse NDK 配置,不用安装Cygwin 文章转自http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 一.关于 ...

  7. NDK配置

    NDK 配置 Android SDK中下载NDK, LLDB Android.mk 和 Application.mk 简单来说 Android.mk 用来描述需要生成哪些模块的 .so 文件 Appl ...

  8. Cocos2d-x 2.2.3 使用NDK配置编译环境

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wwj_748/article/details/30072379 Cocos2d-x 2.2.3 使用 ...

  9. Ubuntu系统---配置OpenCV

    Ubuntu系统---配置OpenCV 目录 一.Ubuntu下配OpenCV 二.Ubuntu下配python-opencv   说明 上述一.二两种方式,配置OpenCV还是有区别的.按个人已有知 ...

随机推荐

  1. CentOS7 修改时区、charset

    1. 修改时区 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 经过这番修改后,JAVA启动后自动使用了Shanghai作为时区. 2. ...

  2. 部署 DevStack

    本节按照以下步骤部署 DevStack 实验环境,包括控制节点和计算节点 创建虚拟机 按照物理资源需求创建 devstack-controller 和 devstak-compute 虚拟机 安装操作 ...

  3. UVa11424 GCD - Extreme (I)

    直接两重循环O(n^2)算gcd……未免太耗时 枚举因数a和a的倍数n,考虑gcd(i,n)==a的i数量(i<=n) 由于gcd(i,n)==a等价于gcd(i/a,n/a)==1,所以满足g ...

  4. 【CF696B】Puzzles(树形DP,期望)

    题意:n 个节点的树,初始位置为 1 号节点,初始时间为 1.每次随机地走向任何一个没有走过的子树并且令时间 +1求问走到每一个点时的时间的期望值 思路:比较少见的一道自顶向下的树形DP dp[i]表 ...

  5. 【NOIP2016练习】T3 质数 (分块)

    题意:共有N盏灯,标号为1到N,有M个标有不同质数的开关,开关可以控制所有标号为其标号倍数的灯,按一次开关,所有其控制的灭着的灯都点亮,所有其控制的亮着的灯将熄灭.现在,宿管可以无限的按所有开关,所有 ...

  6. 用node写的一个后台框架

    server.js var http=require('http') var handleUrl=require('./handleUrl') var config = require('./conf ...

  7. excel 表格lookup 的操作

    这个实现语句如下,(写在2行然后向下拖动)(2007或以上版本): = IF(,ISBLANK($H2),$G2="), "", IF("), IF($H2&g ...

  8. iOS键盘中英文切换键盘高度获取通知方法

    iOS键盘中英文切换键盘高度获取通知方法, 有需要的朋友可以参考下. 注册通知 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppea ...

  9. 用Linux完成Oracle自动物理备份

    https://blog.csdn.net/24024846/article/details/115292

  10. Intellij IDEA创建项目

    问题:无Java文件 解决方案: 打开file下面的project structure,在main目录下新建java文件,并将java文件设置为 Sources属性 问题:无resouces 解决方案 ...