Ubuntu NDK配置与JNI demo
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的更多相关文章
- android JNI 简单demo(2)它JNI demo 写
android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...
- Ubuntu TensorFlow 源码 Android Demo的编译运行
Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...
- NDK工具开发Jni,Android studio jni开发
NDK工具开发JNI 对于JNI的作用,我这边就不详细说明了,百度google 有很多这样的介绍,这边着重详解AS使用NDK工具开发,调C的流程. 1,创建工程 2,创建native方法 //该类的路 ...
- Android studio 使用NDK工具实现JNI编程
前言: Android开发中常常会使用到第三方的.so库.在使用.so库的时候就要用到JNI编程.JNI是Java Native Interface的缩写.它提供了若干的API实现了Java和其它语言 ...
- ubuntu下配置apache2多域名(apache2.4.6)
Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同. 1. 打开目录 /et ...
- Eclipse NDK 配置,无需安装Cygwin
Eclipse NDK 配置,不用安装Cygwin 文章转自http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 一.关于 ...
- NDK配置
NDK 配置 Android SDK中下载NDK, LLDB Android.mk 和 Application.mk 简单来说 Android.mk 用来描述需要生成哪些模块的 .so 文件 Appl ...
- Cocos2d-x 2.2.3 使用NDK配置编译环境
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wwj_748/article/details/30072379 Cocos2d-x 2.2.3 使用 ...
- Ubuntu系统---配置OpenCV
Ubuntu系统---配置OpenCV 目录 一.Ubuntu下配OpenCV 二.Ubuntu下配python-opencv 说明 上述一.二两种方式,配置OpenCV还是有区别的.按个人已有知 ...
随机推荐
- LineageOS源码定制手机系统
LineageOS源码定制手机系统 导语: 现在市场的手机基本就两种: 苹果机和android机. 今天我们不谈苹果机, 对小编我来讲,那是个奢侈品, android是我的最爱.对于一般androi ...
- 通过rabbitmqadmin管理rabbitmq
# 安装rabbitmq $ sudo apt install rabbitmq-server # 下载rabbitmqadmin管理工具 sudo rabbitmq-plugins enable r ...
- 两个时间相差多少 .net中的timespan应用
原文发布时间为:2008-10-31 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- 利用jenkins和hockey组织iOS持续交付过程
1. jenkins可以单独作为web应用部署和启动,但建议将其部署在tomcat上,可以方便的管理其他一些web应用,下面讲解如何在Mac设备上安装tomcat 到tomcat官网下载适用于Mac设 ...
- Git基础篇【转】
转自:https://i.cnblogs.com/EditPosts.aspx?opt=1 1.设置名字与邮箱 $ Git config –global user.name “YourName” $ ...
- SpringMVC (<context:include-filter>和<context:exclude-filter>的使用)
eg: 1.现在给定一个项目包的结构: com.yk.controller com.yk.service 2.在SpringMVC.XML有以下的配置: <!--扫描@controller注解- ...
- [Python Cookbook] Numpy Array Joint Methods: Append, Extend & Concatenate
数组拼接方法一 思路:首先将数组转成列表,然后利用列表的拼接函数append().extend()等进行拼接处理,最后将列表转成数组. 示例1: import numpy as np a=np.arr ...
- netty-类图对比
- mac下 JMeter 4.0 进行多用户接口压力测试
1.最近在做公司的内部系统,需要进行多用户压力测试,于是上网在官网下载了Jmeter 压缩包,并放在指定的目录解压,打开解压后文件夹到bin目录下: 执行sh jmeter Jmeter就启动起来了 ...
- tomcat知识点
(1)使用线程池 Servlet引擎为每一个请求创建一个隔离的线程,分配这个线程给service()方法,在它执行完后移除这个线程.默认情况下,servlet引擎 为每一个请求创建新的线程.因为创 ...