Android Studio NDK开发

整理完Eclipse的NDK开发,再整理下Android Studio的。。

一个比较不错的百度网盘: http://pan.baidu.com/share/home?uk=2383159761  经常更新最新的Android方面的开发包,可以到里面下载到ndk的包

创建一个Android的工程,放一个TextView用于显示文字,功能很简单,从native层获取字符串并显示到TextView上

然后编写相关代码:

public class MainActivity extends AppCompatActivity
{
    //加载so
    static
    {
        System.loadLibrary("MyJni");
    }

    //声明本地方法
    public native String GetString();

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

        TextView textView = (TextView)findViewById(R.id.textViewID);
        textView.setText(GetString());
    }
}

1. 选择菜单 Build-->Build APK,然后使用命令行cmd进入Android工程 \app\src\main\java 目录下,生成.h头文件

javah -d ../jni 包名.主Activit名

如: javah -d ../jni com.example.eclipsendk.MainActivit

2. 在工程目录栏jni文件夹右键 New --> C/C++Source File

填写文件名,选择.c文件(不生成头文件),如果使用.cpp文件记得 extern "C" 一下

3. 编写native层代码,在MyJni.cpp中

#include "test_com_androidstudiondk_MainActivity.h"

//从头文件中把函数声明拷过来
JNIEXPORT jstring JNICALL Java_test_com_androidstudiondk_MainActivity_GetString
        (JNIEnv *env, jobject obj)
{
    //.c文件这样使用
    return (*env)->NewStringUTF(env, "Hello Android Studio NDK");

    //.cpp文件 这样使用
    //return env->->NewStringUTF("Hello Android Studio NDK");
}

4. 然后添加几个文件的内容

①. local.properties文件,添加上ndk的路径

②. gradle.properties文件声明使用NDK

android.useDeprecatedNdk=true

③. app目录下的build.gradle文件  声明.so的名称

可通过这里切换视图

④. 都修改完毕后,编译APK,放入到模拟器中运行。

debug版(Build APK)生成在: app\build\outputs\apk目录下

release版(Generate Signed APK)生成在: app目录下

时间: 2024-12-24 23:51:28

Android Studio NDK开发的相关文章

android studio NDK 开发初探

android studio NDK 开发初探 环境配置 1)下载ndk 2)在android studio中配置ndk 路径 3)配置gradle 在gradle.properties中加入 android.useDeprecatedNdk=true配置 开启ndk 在开发过程中我们有时还会用到c++中到stl库这时我们就需要在build.gradle 中加入 defaultConfig { ndk { moduleName "jnitest" stl "stlport_s

Android Studio NDK 开发配置

一:使用gradle experimental plugin 首先,我们不能用android studio默认的gradle插件,我们需要把android studio的插件改为gradle experimental plugin, 这个plugin是google开发的,网址在这里: http://tools.android.com/tech-docs/new-build-system/gradle-experimental Gradle experimental plugin是android 

(原)使用android studio ndk开发流程

先使用android stuido创建一个app工程,创建工程的时候,.gradle目录结构下为2.8目录.(note:2.10目录为后续更新结果出现.) 依次修改上述红色方框标注部分内容: 1)修改gradle/wrapper/gradle-wrapper.properties目录内容: 2)修改工程目录下的build.gradle,主要是修改gradle插件这部分内容: 3)修改app/build_gradle内容: 修改前原始内容: apply plugin: 'com.android.a

Android Studio NDK开发浅谈

环境: Android Studio 1.1.0 NDK-r10d 1.新建项目--->包名:com.mxl.az.ndk 新建包含native方法的类:JniOperation.class public class JniOperation { public static native String getString(); public native int add(int a, int b); } 2.然后使用javah命令生成.h文件 打开“小黑框”,进入项目目录的.../app/bui

android studio ndk开发总结

1.path环境变量 2.android studio关联ndk local.properties   ndk.dir gradle.properties  android.useDeprecatedNdk=true//兼容老版本 3.build.gradle 配置 defaultConfig{ ndk{ moduleName "Hello" abiFilters ''armeabi","armeabi-v7a","x86" } } 4

Android Studio NDK开发环境搭建

一.   下载安装Android studio 和 NDK 二.   在Android studio中配置NDK(和SDK配置一样) 三.   用Android studio建立一个工程,打开project,建立一个调用C的类,然后在mian文件夹下建立一个jni文件夹. 四.   打开cmd ,输入cd 工程文件夹路径,如cd C:Users\CFF\Desktop\MyApplication\app\src\main\java,然后按回车. 五.   输入javah –jni +调用C的类路

Android Studio NDK开发-JNI调用Java方法

相对于NDK来说SDK里面有更多API可以调用,有时候我们在做NDK开发的时候,需要在JNI直接Java中的方法和变量,比如callback,系统信息等.... 如何在JNI中调用Java方法呢?就需要先了解FindClass和GetMethodID了. FindClass和GetMethodID 在JNI中可以通过FindClass可以找到Java类,得到jclass,例如: jclass clz=(*env)->FindClass(env,"com/jjz/JniHandle"

Android Studio NDK及so文件开发

前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU.平台.ABI等差异,开发人员只需要简单修改mk文件(指出"哪些文件需要编译"."编译特性要求"等),就可以创建出so. 为什么使用NDK? 1.代码的保护.由于apk的ja

Android之NDK开发

一篇文章: Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于“第三方应用只能使用Java”.在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可