Android Studio Ndk的配置
来源:互联网 发布:日本饺子 知乎 编辑:程序博客网 时间:2024/05/17 08:10
NDK:全称为Native Development Kit
为何要用到NDK?
概括来说主要分为以下几种情况:
1. 代码的保护,由于apk的Java层代码很容易被反编译,而C/C++库反编译难度较大;
2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的;
3. 便于移植,用C/C++写的库可以很方便在其它的嵌入式平台上再次使用。
前提
java sdk 环境变量配置好。
java 命令可以用
javah 命令可以用
Terminal 命令配置好
1.android Studio 中的Terminal 命令行配置
在环境变量中的path 配置sdk中的 tool 目录
重启 Android studio 使用 android list target 命令如果出现
如果上图这安装正确
1.Android studio NDK 环境变量的配置
2。SO库的开发与引用
在环境和命令行配置好的情况下:
在MainActiviy.java中建立了一个方法
public native String getStrFromJNI();
1.在Terminal 里面输入javah命令编译
cd 命令进入java目录
javah命令
2.新建 jni 文件夹个新建 demo.c c语言类 里面方法和上面生成的差不多,可以拷贝
3.编译 demo.c 文件
在jni文件夹中新建 Android.mk文件
LOCAL_MODULE := demo //要生成的so库的名称,但实际为libdemo.so
LOCAL_SRC_FILES := demo.c //要使用的文件,刚才编写的demo.c文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)
4.使用so文件
在local.properties中设置NDK路径,我的NDK示例如下:
在app的build.gradle的android节点下设置:
方法的调用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvNone= (TextView) findViewById(R.id.tv_one);
tvNone.setText(getStringforJni());
Log.i("test",getStringforJni());
}
@SuppressWarnings("JniMissingFunction")
public native String getStringforJni();
static {
System.loadLibrary("demo");
}
}
在进行 ndk-build 在运行(注意)
0 0
- Android Studio Ndk的配置
- android studio 配置 NDK
- Android Studio NDK配置
- android studio ndk配置
- Android Studio 配置NDK
- Android Studio 配置NDK
- Android Studio配置NDK
- android studio NDK配置
- Android Studio的NDK环境配置
- Android Studio中NDK的配置
- Android Studio NDK HelloWorld 的配置
- Android Studio支持NDK的配置
- android studio中ndk的配置
- android studio中ndk的配置
- ubuntu android studio ndk 配置
- android studio ndk编程 配置
- mac android studio 配置 ndk
- android studio 配置ndk方案
- 优化M有School 第四章课后3 借阅事务
- 数据库设计第六章上机题
- Android之自定义Toast提示框样式
- 动态规划 --- 矩阵连乘初学整合
- 基础练习 字母图形
- Android Studio Ndk的配置
- header() 函数的用法和作用
- Spring配置Scope属性注意点
- Android报错整理
- Oracle安装之后电脑变慢
- 首次移植程序总结
- Windows 7搭建svn服务器
- 十八,iOS设计模式之单例模式
- java实现网上在线支付--09,10,11,12_分析易宝支付网关的应答协议与处理代码,完成用于处理支付响应的Servlet的初步编写和调试,完成处理支付网关响应结果的Servlet,支付实现