NDK入门 第一个NDK项目
来源:互联网 发布:uefi ubuntu 双系统 编辑:程序博客网 时间:2024/06/05 05:44
1 新建一个android项目
在新建的项目中新建类JniTest,并在类中编写native方法。
2 使用cmd命令生成.h文件
我的teminal不能用了 我擦,所以我用的cmd。
首先rebuild project一下。然后会看到build下生成的classes文件夹。
使用doc命令,首先切换到debug的目录下。
cd D:\Development\StudioProject\Application\app20-ndk\build\intermediates\classes\debug
然后使用命令
javah -jni -classpath . com.yeliang.app20_ndk.JniTest
然后会发现生成的.h
.h文件内容
3 编写c代码
在main文件夹下新建jni文件夹,并把JniTest.h文件拷贝到此文件夹下
新建c文件
把刚才的.h文件中的方法拷贝到此,并实现
此方法只是简单的返回了一个字符串。
4 加载so库
在gradle中加如下配置
ndk{ moduleName "yeliang-so-name" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。 }
注意放到defaultConfig中:
在JniTest中添加如下代码
static{ System.loadLibrary("yeliang-so-name"); }
在gradle.properties中添加如下
android.useDeprecatedNdk=true
5 调用so库中的内容
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView)findViewById(R.id.tv); textView.setText(JniTest.setText()); }}
运行结果
会看到生成的so
如果遇到错误:
意思是没有声明此项目支持ndk,需要在gradle(Project)中配置这一句话
android.useDeprecatedNdk=true
如果遇到错误;
Error:Execution failed for task ':app:incrementalDebugJavaCompilationSafeguard'.> java.io.IOException: Could not delete path app\build\intermediates\classes\debug'.
说明在rebuild时候,无法删除你的build下的文件。可能你在别的地方打开了此文件。比如cmd。之前不是在cmd中切换到debug目录下,用于生成.h。所以此时你需要关闭打开你文件夹的应用。然后重新rebuild。
阅读全文
0 0
- NDK入门 第一个NDK项目
- 第一个NDK-JNI项目
- Android NDK开发学习:我的第一个NDK项目
- Android NDK开发学习 第一个NDK项目
- 使用AndroidStudio运行第一个NDK项目
- 第一个NDK程序
- 第一个NDK程序
- 第一个NDK程序
- Android 第一个NDK
- NDK第一个程序
- 第一个NDK工程--hello ndk
- 编写第一个NDK项目——HelloNDK
- JNI NDK (AndroidStudio+CMake )开发第一个项目的流程
- NDK入门(一) 在Android Studio中创建并运行第一个ndk程序hello world
- 编写第一个NDK程序
- 创建第一个NDK程序
- 第一个NDK程序 MyFirstNDK_app
- 编写第一个NDK程序
- 阻止表单多次被点击
- MySQL优化系列(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)
- Nginx 核心模块、HTTP模块、邮件模块解析
- Jmeter 接口测试工具性能测试需求分析
- Eigen 模板库的简介
- NDK入门 第一个NDK项目
- IDEA+Maven+TestNG+Selenium环境搭建
- easyui 设置dataGrid选中行的背景颜色
- 深入理解 Android 卷I
- C++知识点-虚函数的作用和使用方法
- 数据结构基础温故-3.队列
- 艺多不压身
- SharedPreferences
- win10-ubuntu安装screenfetch