使用IntelliJ IDEA 编译Android JNI
来源:互联网 发布:阿里通网络客服电话 编辑:程序博客网 时间:2024/05/17 22:31
使用IntelliJ IDEA 编译Android JNI
-------------致一些想要编译android so文件 又不想多装一个Android studio童鞋
当然 首先还是要装Android SDK 以及下载 Android NDK配置到环境变量 NDK查了下貌似IDEA没办法导入 这个下面会讲到
构建一个基础的Android工程
JniTest中的代码
public class JniTest { public native String getString(String str);}native 标识是c/c++的入口函数
命令行cd 到app/src/main/java 路径下
输入如下命令 javah -jni 包名.类名
javah -jni com.example.jni.myapplication.JniTest
会生成这样一个.h文件 这个文件名是可以重命名的
在main路径下创建jni文件夹
将刚才的.h文件移到这个目录下面 并创建Android.mk 和 .cpp文件
.mk的代码
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := demoLOCAL_SRC_FILES := demo.cinclude $(BUILD_SHARED_LIBRARY).cpp代码
#include "demo.h"#include <jni.h>JNIEXPORT jstring JNICALL Java_com_example_jni_myapplication_JniTest_getString(JNIEnv *env , jobject obj, jstring ssss){ char *str = "hello from c"; jstring jstr = (**env).NewStringUTF(env, str); return jstr;}
关于java 和 c++类型转换 比较复杂 http://blog.sina.com.cn/s/blog_5e357d2d01012cu3.html 可以参考一下这篇文章
接下来就是编译部分
首先 在local.properties 中加入如下代码
ndk.dir=/Users/admin/Library/Android/sdk/ndk-bundlesdk.dir=/Users/admin/Library/Android/sdksdk目录一般都是一件创建了
ndk路径就是你下载下来的ndk的路径 这个配置是idea不加载ndk编译jni的关键
src 的build.gradle下配置如下
defaultConfig { applicationId "com.example.jni.myapplication" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName"testLib" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" } }
在gradle.properties 中加入如下代码
android.useDeprecatedNdk=true
否则会报
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
这个异常
然后就可以make project编译了
so在这个路径下
public class JniTest { static { System.loadLibrary("testLib"); } public native String getString(String str);}lib在代码中省略
这个类加so 就可以发布了
JniTest 包名一旦生成 .h文件 就不可随意更改 否则会加载不到函数
- 使用IntelliJ IDEA 编译Android JNI
- 使用 IntelliJ IDEA 和 IntelliJ Clion 进行 JNI 开发
- 13.IntelliJ IDEA 编译方式介绍 - IntelliJ IDEA 使用教程
- Intellij Idea编译失败
- Intellij IDEA 编译错误
- IntelliJ IDEA 编译方式
- Android Studio(IntelliJ IDEA)使用笔记
- IntelliJ IDEA,Android Studio使用教程
- IntelliJ IDEA使用 - idea和android studio制作Android签名
- IntelliJ IDEA使用 - idea和android studio引入so库
- IntelliJ IDEA编译Android项目比Eclipse慢
- Intellij IDEA 编译时报“使用过时方法”的解决办法
- 使用IntelliJ IDEA编译spark-1.3.0源码
- Android Studio : Intellij idea
- Intellij IDEA使用总结
- Intellij IDEA使用总结
- Intellij IDEA使用总结
- intellij-idea 使用技巧
- JavaScript Promise对象详解
- 《IBM Security AppScan Standard 使用方法,本人实践》
- 关于android高德地图地图无法显示的问题
- 如何在Eclipse中打开现有项目(高手免入)
- 视图概述
- 使用IntelliJ IDEA 编译Android JNI
- centos7+jenkins2.7安装与远程tomcat部署(四)
- AFN使用注意点
- github的简单使用
- gulp的使用
- Codeforces 721A-One-dimensional Japanese Crossword
- Android 性能优化 之 TraceView工具的使用
- C++ map的基本操作和使用
- TextView基本用法(跑马灯)