android studio ndk怎么调用

如上面所说

android studio ndk调用过程如下:

通过jniaes案例说明调用NDK层配置过程

而我们通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包。

首先去官网下载一个最新的NDK,随便放到哪都行,像我放在D:\Dev\Android\android-ndk-r10d.

(1) 新建一个项目:名称JniAes

首先在java类中添加native接口,注意写好native接口和System.loadLibrary()即可。代码如下:

1 public synchronized static native String getFromNativeIv();
2 public synchronized static native String getStringFromNative();
3 public synchronized static native int jniCheckAPP(Context context);
4

然后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录:

aes\app\build\intermediates\classes\debug\android\

(2)接下来跟class文件生成相应的.h头文件,执行如下命令即可

点击"View->Tool Windows->Terminal" 即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件.
javah -d jni -classpath c:\Users\sodinochen\AppData\Local\Android\sdk\platforms
\android-16\android.jar;..\..\build\intermediates\classes\debug com.aes.jniaes.MainActivity

(3)然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫strk.c 。

strk.c文件,用于实现核心代码逻辑,判断包名.哈希值是否合法,如果返回1,为合法。反之,则不合法。入口方法为:
jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,
      jobject thiz)

接下来在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样,我的添加后如下:

sdk.dir=D\:\\Dev\\Android\\android-sdk-windows
ndk.dir=D\:\\Dev\\Android\\android-ndk-r10d

(4)接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:

defaultConfig {
       applicationId "com.aes.jniaes"
       minSdkVersion 15
       targetSdkVersion 22
       versionCode 1
       versionName "1.0"

       ndk {
           moduleName "checkapp-jni"       //生成的so名字
           abiFilters "armeabi", "armeabi-v7a", "x86"   //输出指定三种abi体系结构下的so库。目前可有可无。
       }
   }

(5)最后就是添加静态初始化loadLibrary代码,添加如下:

static {
        System.loadLibrary("checkapp-jni");    //so文件的名字
      }

编译出来的so文件在aes\app\build\intermediates\ndk\debug\lib目录下

     é‚£ä¹ˆå¦‚何将编译好的so文件进行使用,可以通过如下方式:

二 . å¼•用so文件

(1).在“src/main”目录中新建名为“jniLibs”的目录;

(2).将so文件复制、粘贴到“jniLibs”目录内。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-12
  NDK编译步骤:
1.选择 ndk 自带的例子 hello-jni ,我的位于E:\android-ndk-r5\samples\hello-jni( 根据具体的安装位置而定 ) 。
2.运行 cygwin ,输入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,进入到 E:\android-ndk-r5\samples\hello-jni 目录。
3.输入 $NDK/ndk-build ,执行成功后,它会自动生成一个 libs 目录,把编译生成的 .so 文件放在里面。 ($NDK是调用我们之前配置好的环境变量, ndk-build 是调用 ndk 的编译程序 )
4.此时去 hello-jni 的 libs 目录下看有没有生成的 .so 文件,如果有,ndk 就运行正常啦。本回答被提问者采纳
如何在Android studio下调试ndk
点击"View->Tool Windows->Terminal" 即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件.javah -d jni -classpath c:\\Users\\sodinochen\\AppData\\Local\\Android\\sdk\\platforms\\android-16\\android.jar;..\\..\\build\\intermediates\\classes\\

android studio JNI 调试 (debug)
启动调试 连接你的Android设备或启动一个Android模拟器。在Android Studio中,点击“Debug”按钮(通常是一个带有绿色虫子的图标)来启动调试会话。当应用启动并触发你设置的断点时,调试器将暂停执行,并允许你检查变量、调用堆栈等。调试本地代码 当调试器暂停在本地代码(C\/C++)的断点时,你可以使用And...

Android Studio cmake编译FFmpeg以及Jni调用
在Android Studio中使用cmake编译FFmpeg以及进行Jni调用的步骤如下:一、编译FFmpeg 安装与配置NDK:下载并解压Android NDK。配置环境变量,确保在命令行中可以访问NDK工具。编译FFmpeg源代码:下载FFmpeg源代码。修改configure文件以适应Android平台,如设置交叉编译工具链等。编写build.sh脚本,用于编译FFmpeg。脚...

android studio 开发app 串口读取操作
1. 创建NDK项目 在Android Studio中创建一个新项目时,勾选C++支持,以便能够使用NDK进行C\/C++代码的编译。对于已有的项目,可以在app的gradle文件中添加NDK配置,以启用NDK支持。2. 下载并导入android-serialport-api库 从相关资源中下载android-serialport-api库。将必要的文件(如SerialPort.c和SerialP...

ndk环境配置
在打开的页面中,找到SDK Location选项。在NDK Location一栏中,设置前面解压的NDK目录路径。这样,Android Studio就能够识别并使用NDK进行JNI开发了。完成以上步骤后,您的NDK环境就已经配置完成了。此时,您可以在Android Studio中进行JNI开发,通过C\/C++代码实现部分功能,并由Java代码通过JNI接口调用。如果...

android studio怎么使用ndk-stack
NDK 异常堆栈 查看工具 ndk-stack 的使用 在adt目录下的\\sdk\\platform-tools 建立一个bat文件, 输入以下内容后双击, 在eclipse中运行你的工程吧,如果有异常就可以看到堆栈 adb logcat | "NDK目录\/ndk-stack" -sym "android项目目录\/obj\/local\/armeabi\/obj\/local\/armeabi"要带上双引号 ...

android studio ndk-build怎么配置环境
在开始配置Android Studio NDK环境之前,请确保您已下载并安装了Android NDK。下载完成后,需为您的项目设置NDK路径。具体操作是在项目的local.properties文件中添加一行ndk.dir=路径\/ndk,其中“路径”为您的NDK安装路径。接着,需要在项目的build.gradle文件中进行相应修改。打开build.gradle文件,进入...

[UE4] 使用AndroidStudio进行真机调试
在Unreal Engine 4(UE4)中开发游戏或应用时,使用AndroidStudio进行真机调试是一个高效且必要的流程。以下是在UE4环境中,通过AndroidStudio进行真机调试的详细步骤:一、准备阶段 关闭Unreal Engine和Epic Games Launcher 在开始之前,确保关闭Unreal Engine和Epic Games Launcher,以避免在安装NDK组件或设置...

android studio ndk-build 编译C生成.so文件(ndk基础篇),看完你就懂...
使用Android Studio通过ndkbuild编译C代码生成.so文件的步骤如下:准备工作:确保开发环境已安装Android Studio 2.3版本及以上,并配置了必要的SDK、JDK。通过SDK Manager安装所需的组件。创建一个新的Android项目,例如命名为NdkDemo。ndkbuild编译步骤:在gradle.properties文件中添加配置:添加android.use...

如何优雅地使用NDK – 徐绍华
NDK开发比较常用的命令就是生成头文件、构建so包,在android studio上我们可以先配置好命令,使用起来就很方便了,这是我感觉最赞的地方。如下图所示,我添加了三个命令,按加号添加 其中一个命令的配置详情如下图:命令配置参数:javah用于生成头文件 Program:$JDKPath$\/bin\/javah Parameters: -encoding...

相似回答