使用NDK进行开发android

如上面所说

在eclips中配置NDK路径
在eclipse中点击菜单栏window-Perferences,配置NDK的路径。


在工程中添加native lib
新建一个空白的Android工程,在根目录上点击右键Adnroid Tools - Add Native Support...

在弹出的对话框中输入要新建的lib的名称,点击Finish,在工程目录下会多出一个jni文件夹,里面有一个空白的cpp文件和一个Android.mk文件

Android.mk文件的内容是
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestJni
LOCAL_SRC_FILES := TestJni.cpp
include $(BUILD_SHARED_LIBRARY)
TestJni就是要加载的lib的名称,LOCAL_SRC_FILES 是资源文件的路径。
hello jni

MainActivity.java代码如下:

复制代码代码如下:
package com.example.testjni;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

TextView textView = new TextView(this);
textView.setText(helloFromJni());
setContentView(textView);
}

public native String helloFromJni();

static {
System.loadLibrary("TestJni");
}
}
TestJni.cpp代码如下:

复制代码代码如下:
#include
extern "C" jstring Java_com_example_testjni_MainActivity_helloFromJni(JNIEnv *env, jobject thiz) {
return env->NewStringUTF("Hello From Jni");
}
直接运行程序,可以在Console窗口中看到NDK build的输出

有一点要注意:由于我使用的是x86的Android虚拟机来运行,所有使用的是x86的编译器。制定编译器的方法是在jni目录新建一个Application.mk的文件,输入以下内容
#APP_ABI := armeabi
APP_ABI := x86
#APP_ABI := armeabi armeabi-v7a x86 mips mips-r2 mips-r2-sf
#APP_ABI := all
APP_STL := stlport_static
如果是普通arm处理器的Android手机,使用APP_ABI := armeabi,如果是x86处理器的,使用APP_ABI := x86,等等。
如果APP_ABI := all,会编译所有指令的so。
运行结果如下:

至于C/C++的编译是怎么实现的,我们可以查看一下工程的Properties

在Builders里面有多了两项,一个是CDT Builder,一个是Scanner Configuration Builder。
现有的工程添加Builder
如果工程里面已经有jni目录了,但是没有配置C/C++的编译器,高手们可以自己添加Builder,对于我这种爱投机取巧的小菜鸟,工程右键菜单,新添加一个空白的so,然后再删除,CDT Builder和Scanner Configuration Builder就出来了。

温馨提示:答案为网友推荐,仅供参考
使用NDK进行开发android
}直接运行程序,可以在Console窗口中看到NDK build的输出有一点要注意:由于我使用的是x86的Android虚拟机来运行,所有使用的是x86的编译器。制定编译器的方法是在jni目录新建一个Application.mk的文件,输入以下内容#APP_ABI := armeabiAPP_ABI := x86#APP_ABI := armeabi armeabi-v7a

android开发,怎么使用ndk编译成.so文件
从Android NDK官方网站下载最新版本的NDK。将下载的压缩包解压到一个指定目录,例如D:ndk。配置编译环境:打开命令行窗口。使用cd命令进入NDK的samples目录,例如D:ndksampleshellojni。执行D:ndkndkbuild.cmd命令进行编译。编译生成.so文件:如果编译过程没有错误,会在指定的目录下生成.so文件。例如,在li...

android ndk是android开发中的必须品么?
对于大多数普通的Android应用开发,如果不需要进行底层硬件访问或高性能计算,通常不需要使用NDK。使用Java或Kotlin等高级语言进行开发,已经能够满足大部分应用的功能需求。综上所述,Android NDK在Android开发中并不是必须的。它主要适用于需要进行底层硬件访问、高性能计算或复用已有C\/C++代码的场景。对于一般...

android ndk环境搭建详细步骤
在线安装:在Eclipse中使用Help - Eclipse Marketplace,搜索Sequoyah插件并进行在线安装。配置NDK路径:在Window - preferences - Android - 本机开发中添加NDK路径。验证安装:右键Android项目,检查是否包含“Add Native Support…”选项。JNI编译环境配置 转换工程:将Android工程转换为C\/C++工程,添加C\/C++...

安卓ndk开发支持16k内存
安卓NDK开发支持16K内存主要涉及对Android系统从Android 15开始支持的16KB页面大小的适配。适配工作主要包括以下几个方面:检查并重构原生代码:开发者首先需要检查APP是否使用了原生代码。由于16KB页面大小的支持需要原生代码进行相应的重构,因此,如果APP中包含了原生代码,开发者需要对其进行修改,以确保其能够...

Android NDK Jni 开发C和C++的区别
Android NDK Jni 开发C和C++的区别 由于Android官方NDK例子大多使用C语言编写,所以当我们想用C++进行开发时,会出现种种错误。下面简单说说几点不同之处,代码中用红色标出了不同之处:1.先来一个用C写的例子:(1)hello.c文件。在C中没有引用,传递的env是个两级指针,用(*env)->调用方法且...

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

android ndk的理解
NDK的一个重要特性是交叉编译。这意味着开发者可以在自己的开发机器(通常是PC或Mac)上,使用NDK提供的工具链,编译出可以在Android设备(如基于ARM或x86架构的设备)上运行的原生代码。与Java\/Kotlin代码的交互:通过NDK编译生成的动态链接库文件(.so文件),可以与Java或Kotlin代码进行交互。这种交互通常...

Unity 安卓开发环境配置(JDK,SDK,NDK,Gradle)
NDK可以从Android开发者官网下载,选择与Unity版本相匹配的NDK版本。例如,Unity 2023.2及2022.3 LTS推荐使用NDK r23b。配置Unity:同样在Unity的Edit > Preferences > External Tools中,设置Android NDK的路径为下载并解压后的NDK目录。四、Gradle(项目自动化构建开源工具)下载与安装:Gradle可以从其官网...

“Android NDK ”是什么,在什么情况下使用?
1、NDK是一系列工具的集合。2、NDK提供了一份稳定、功能有限的API头文件声明。3、NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式。4、NDK将使Android平台支持C开发的开端。NDK使得在android中,java可以调用C函数库。我们都知道,java是半解释型语言,很容易被反汇编后拿到源代码...

相似回答
大家正在搜