windows环境 andorid JNI开发
1.下载并安装GNUstep
下载地址:http://www.gnustep.org/experience/Windows.html
安装文件
a.GNUstep MSYS System
b.GNUstep Core
c.GNUstep Devel
安装以上文件最新版本,都默认安装在同一个目录.
安装完成后,进入GNUstep菜单,选择shell,进入一个linux的命令界面,输入gcc -v ,如果显示一下gcc的版本信息,安装成功了.我安装的时候,没有安装GNUstep Deve,导致没有正确显示命令 结果,所以这个三个文件是必须安装的
2.在eclipse新建一个android程序.
在HelloJni Activity中:
/**
*
*/
package com.hello.jni; import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; /**
* @author Johnson
* TODO
* 2013-11-25下午4:13:00
*/
public class HelloJni extends Activity { /**
*
*/
public HelloJni() {
// TODO Auto-generated constructor stub
} @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); String hello = sayHello("johnson");
TextView tv = (TextView) findViewById(R.id.showtext);
tv.setText(hello);
} public native String sayHello(String name);
static{
System.loadLibrary("HelloJNI");
} }
3.生成com_hello_jni_HelloJni.h文件
在windows命令行下,进入到项目地址/bin/classes目录下
执行 javah com.hello.jni.HelloJni
生成的com_hello_jni_HelloJni.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_hello_jni_HelloJni */ #ifndef _Included_com_hello_jni_HelloJni
#define _Included_com_hello_jni_HelloJni
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_hello_jni_HelloJni
* Method: sayHello
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_hello_jni_HelloJni_sayHello
(JNIEnv *, jobject, jstring); #ifdef __cplusplus
}
#endif
#endif
javah 包路径.调用JNI的Activity类的名称. 在之前先build项目,生成classes文件.
4.编写com_hello_jni_HelloJni.c文件
将生成的com_hello_jni_HelloJni.h文件移动到jni文件夹下,在jni文件夹下创建com_hello_jni_HelloJni.c文件
#include <string.h>
#include <com_hello_jni_HelloJni.h> /* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* apps/samples/hello-jni/project/src/com/example/hellojni/HelloJni.java
*/ jstring Java_com_hello_jni_HelloJni_sayHello( JNIEnv* env,jobject thiz, jstring inputstr )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
可以直接将com_hello_jni_HelloJni.h中的接口,拷贝到com_hello_jni_HelloJni.c中来,添加上参数,创建方法体.
方法名称和参数要和com_hello_jni_HelloJni.h中的一致.
5.编写Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := HelloJNI
LOCAL_SRC_FILES := com_hello_jni_HelloJni.c include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE 改成自己项目名称
LOCAL_SRC_FILES 改成自己c文件的名称 6.生成.so文件
进入GNUsetp shell
进入到项目的jni目录下
执行 ndk安装路径/ndk-build 成功生成libs/armeabi/libHelloJNI.so
如果生成失败,请仔细查看日志,一般是com_hello_jni_HelloJni.c参数问题,或者方法体内问题. 7.启动项目
如果是报loadLibrary,请检查 System.loadLibrary("HelloJNI");里面调用的名称是否与libHelloJNI.so对应.调用名称为HelloJNI,lib是系统默认的前缀.不用写.
windows环境 andorid JNI开发的更多相关文章
- windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
按此文章<Hadoop集群(第7期)_Eclipse开发环境设置>进行MapReduce开发环境搭建的过程中遇到一些问题,饶了一些弯路,解决办法记录在此: 文档目的: 记录windows环 ...
- Jenkins持续集成学习-Windows环境进行.Net开发1
目录 Jenkins持续集成学习-Windows环境进行.Net开发 目录 前言 目标 使用Jenkins 安装 添加.net环境配置 部署 结语 参考文档 Jenkins持续集成学习-Windows ...
- Jenkins持续集成学习-Windows环境进行.Net开发2
目录 Jenkins持续集成学习-Windows环境进行.Net开发2 目录 前言 目标 使用 .Net Stardard 单元测试 流程 手动执行单元测试 自动执行单元测试 单元测试报告 上传Nug ...
- Jenkins持续集成学习-Windows环境进行.Net开发3
目录 Jenkins持续集成学习-Windows环境进行.Net开发3 目录 前言 目标 优化nuget包生成流程 自动触发构建 Jenkins定时轮询触发 SVN客户端钩子触发 SVN服务器钩子触发 ...
- Jenkins持续集成学习-Windows环境进行.Net开发4
目录 Jenkins持续集成学习-Windows环境进行.Net开发4 目录 前言 目标 Github持续集成 提交代码到Github 从Github更新代码 git上显示构建状态 自动触发构建 Gi ...
- 【转载】Windows环境下JNI的实现实例
转自:http://blog.csdn.net/jjunjoe/article/details/6987183 一.关于JNI: JNI(Java Native Interface):Java本地调用 ...
- Android之NDK环境配置+JNI开发+so文件编译
前言 这边Android作为日常记录,虽然破坏了文章队形~ 最近人工智能挺火的,也稍微了解了一些库,比如关于视觉库openCV.要在安卓下调用这些C/C++库,需要用到JNI开发,在此把过程分享一 ...
- windows 环境下node开发环境搭配问题
当我们使用ccap 生成验证码时,需要node-gyp构建build,但是c的编译环境是在python,vc. node-gyp包 https://github.com/TooTallNate/nod ...
- VM CentOS建立共享文件夹实现VS Code在windows环境下go开发,在centos环境里编译
简介 笔记本没办法更换系统,但是开发又必须在linux环境下进行,直接在vm界面环境下开发,卡的都蒙13.无奈之下想到这个法子,来解决现有尴尬的局面>>> 共分3个部分安装: (1) ...
随机推荐
- PHP图像裁剪为任意大小的图像,图像不变形,不留下空白
<?php /** * 说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ fu ...
- Asp.Net Core--自定义基于策略的授权
翻译如下: 在封面下,角色授权和声明授权使用需求,需求的处理程序和预配置的策略. 这些构建块允许您在代码中表示授权评估,从而允许更丰富,可重用和容易测试的授权结构. 授权策略由一个或多个需求组成,并在 ...
- Postman 发送http请求工具
http://donglegend.com/2016/10/28/Postman/ Postman 发现一款发送Web API & HTTP 请求的工具,没错,就是Postman.推荐给大家, ...
- word20161215
name / 名称 name mapping / 名称映射 name resolution / 名称解析 name server (NS) resource record / 名称服务器资源记录 na ...
- c++ 类静态成员、非静态成员初始化
1.静态成员初始化(不能在构造函数或初始化列表中初始化) 1.1 所有静态成员都可以在类定义之外初始化(通用),如下所示 class test { public: static int a; }; ; ...
- Linux高并发机制——epoll模型
epoll是一个特别重要的概念,常常用于处理服务端的并发问题.当服务端的在线人数越来越多,会导致系统资源吃紧,I/O效率越来越慢,这时候就应该考虑epoll了.epoll是Linux内核为处理大批句柄 ...
- iOS10 SiriKit QQ适配详解
原文连接 1. 概述 苹果在 iOS10 开放了 SiriKit 接口给第三方应用.目前,QQ已经率先适配了 Siri 的发消息和打电话功能.这意味着在 iOS10 中你可以直接告诉 Siri 让它帮 ...
- Swift - 设置tableView每个分区cell圆角
1.// 重新绘制cell边框 func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRow ...
- XML中<beans>中属性概述
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- redis数据类型之—List
(1)list 简单介绍 list是一个有序的字符串列表,是使用双向列表实现的,可以实现最新消息排行.消息队列等功能. (2) list 常用命令