关闭

Android之ndk(hello from c)

125人阅读 评论(0) 收藏 举报
分类:

处理器:x86,arm,mips

在src/main目录下创建一个文件夹jni,在文件夹下创建一个C文件Hello.c

这里写图片描述

//
// Created by Administrator on 2016/8/30.
//
#include<stdio.h>
#include<stdlib.h>
#include<jni.h>
#include "string.h"

//Java+包名+类名+方法名
        jstring Java_com_yang_yin_yinyangapplication_MainActivity_stringFromJNI(JNIEnv* env,jobject obj){

       //     char arr[] = "heello from c";
        //c语言的字符串
        char *cstr= "hello from c";
        //把C语言的字符串转换为java字符串
        jstring jstr = (*env)->NewStringUTF(env,cstr);
        //jstring jstr = (*(*env)).NewStringUTF(env,cstr);
        //com.yang.yin.yinyangapplication
        return jstr;
}

再看Activity类中调用

public class MainActivity extends Activity {
    static {
        System.loadLibrary("hello");
    }

    @Bind(R.id.textView)
    TextView textView;
    @Bind(R.id.button)
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);


    }

    @OnClick(R.id.button)
    public void onClick() {
        textView.setText(stringFromJNI());
    }
    //定义一个本地方法,方法体由c语言实现
       public native String stringFromJNI();


}

make一下工程就会生成相应的so文件
这里写图片描述

这里写图片描述

相关配置~

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.yang.yin.yinyangapplication"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        ndk{
            moduleName "hello"//生成so的库文件名
            ldLibs "log","z","m"
            abiFilters "armeabi","x86","armeabi-v7a"
        }

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.jakewharton:butterknife:7.0.0'
}

效果
这里写图片描述
点击后~

这里写图片描述

终于可以用C写android了是不是很兴奋~

0
0
查看评论

Android studio下使用 NDK 之 Hello world

最后结果目的:1.学会如何使用Android studio创建一个native project2.学会如何在Android studio下使用Java调用本地语言(C/C++)1、首先创建一个普通的Project一值next,直到最后直接运行,是最开始的HelloWorld打开设置->Buil...
  • qq_24850089
  • qq_24850089
  • 2017-03-26 17:05
  • 262

Andorid Studio NDK 开发 - Hello World

原址 介绍了在Android Studio中配置NDK的开发环境:Android Studio NDK开发-环境配置,NDK开发环境配置完成之后,就要写一下著名的Hello World程序了。 在开始之前需要先介绍下Java和c/c++通信:JNI,JNI(Java Nati...
  • u010164190
  • u010164190
  • 2017-03-27 10:07
  • 163

一步一步学习androidNDK编程(hello world)

上一篇博客,已经搭建好了windows下的linux环境(cygwine),这次我们试着写一个hello world。首先需要去android的官网下载android-ndk压缩包,之后解压,进入解压后的目录,我们发现有一个ndk-build的脚本文件,这个脚本文件就是我们用交叉编译的文件。我们通过...
  • mockingbirds
  • mockingbirds
  • 2015-04-19 21:05
  • 3089

android ndk翻译之七:Bionic C 库一览

Bionic C 库一览: 介绍: 核心体系: Bionic设计的核心思想是:尽量简单。 这意味这这个C库只围绕着内核提供轻量级的包装,我们让它尽量小,不去处理一些细枝末页的事情。 取Bionic这个名字,是因为它由部分BSD和部分linux组成: 它的代码由BSD C库和自...
  • fyfcauc
  • fyfcauc
  • 2014-09-25 20:15
  • 705

AndroidStudio NDK项目HelloJni

本示例演示使用AndroidStudio自动生成so文件并打包 1.新建一个android项目HelloJni 2.初始项目大约是这样的 3.新建一个类及native方法 4.接下来需要需要生成AppUtils.class文件和AppUtils.class对应的.h头文件 生成class...
  • yang7206
  • yang7206
  • 2015-12-04 15:30
  • 1199

Android NDK开发之Hello-JNI!

Android NDK 是指Android Native Development Kit,也被Google称为“NDK”。Android程序运行在Dalvik虚拟机中, NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。包括了: 从C / C++生成原生代码库所需要的工具和b...
  • true100
  • true100
  • 2016-06-01 11:23
  • 3158

Android NDK之Hello NDK

eclipse安装最新的 ADT 23.06,据说带最新的NDK插件,如图,就是装好NDK插件了。 下载最新的NDK android-ndk-r10e,地址:http://developer.android.com/ndk/downloads/index.html,下载完毕是一个.exe执行程序,...
  • qjzh0603
  • qjzh0603
  • 2015-07-20 15:55
  • 288

Ubuntu下android NDK开发,实例演示

一.NDK开发环境搭建 1、  下载Linux平台的NDK包,以android-ndk-r6b-linux-x86.tar.bz为例,下载地址为http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2。 2、&...
  • beijingyangbo
  • beijingyangbo
  • 2012-03-02 13:11
  • 2638

Android NDK 环境搭建 之 起始篇NDK HelloWorld

ADT插件:管理Android SDK和相关的开发工具的 NDK插件:用于开发Android NDK的插件,ADT版本在20以上,就能安装NDK插件,另外NDK集成了CDT插件(所以本文直接针对ADT 20以上版本进行说明)到Android官网下载最新的NDK,注:NDK版本在r7以上之后就集成了...
  • catoop
  • catoop
  • 2015-11-19 13:10
  • 3767

Android Studio 使用ndk开发一个 hello world

Android Studio 配置 NDK(一)什么是ndk, 简单的讲就是ndk可以让你调用到c/c++方法来实现一些比较安全的功能,例如你完全可以将Android程序的数据 通过c/c++原来编写存储, 然后通过jni方式调用方法,而且在实现的时候, 也可以各种加密,让后程序的数据更加安全。最近...
  • hzx929518714
  • hzx929518714
  • 2016-12-26 22:31
  • 971
    个人资料
    • 访问:57507次
    • 积分:1971
    • 等级:
    • 排名:千里之外
    • 原创:138篇
    • 转载:27篇
    • 译文:0篇
    • 评论:5条
    最新评论