您当前的位置:首页 > 互联网教程

如何在Android studio下调试ndk

发布时间:2025-05-12 13:55:17    发布人:远客网络

如何在Android studio下调试ndk

一、如何在Android studio下调试ndk

android studio ndk调用过程如下:

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

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

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

首先在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-windowsndk.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文件进行使用,可以通过如下方式:

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

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

二、androidstudio找不到sdk(androidstudio找不到AVD)

Androidstudio导入UI程序时,提示没有找到SDK。如何解决?

1、Error:failedtofindtargetAndroid-21:D:\androidsdk

1、Error:failedtofindtargetAndroid-21:D:\androidsdk

Installmissingplatform(s)andsyncproject

找到一个可用工程,用记事本打开app/build.gradle,找到compileSdkVersion23

将其复制到出错工程的对应位置即可

2、Error:Gradle2.4requiresAndroidGradleplugin1.2.0(ornewer)?butprojectisusingversion1.0.0.

PleaseuseAndroidGradleplugin1.2.0ornewer.

Fixpluginversionandsyncproject

找到一个可用工程,用记事本打开工程下的build.gradle,找到com.android.tools.build:gradle:1.3.0将其复制到出错工程的对应位置即可

3、运行时出现Failure[INSTALL_FAILED_OLDER_SDK]

网上都说是因为程序源码下的“AndroidManifest.xml”文件中定义了“minSdkVersion”的原因,将其删除就可以解决问题。

可是我源码下的“AndroidManifest.xml”文件中根本就没有“minSdkVersion”内容,用记事本打开app/build.gradle,在里面找到了minSdkVersion16????targetSdkVersion23参照一个可用工程,将出错工程的对应版本修改过来即可

明明已经下载了SDK安装了JDK?却提示找不到,原来是还得在Androidstudio中设置SDK路径

androidstudio找不到SDK怎么办

打开othersetting--defaultprojectstructure,进入SDK设置页面,在这里可以设置SDK的路径,如果没有SDK,可以在网上下载,解压后再按照上面的步骤指定就可以了。

打开othersetting--defaultprojectstructure,进入SDK设置页面,在这里可以设置SDK的路径,如果没有SDK,可以在网上下载,解压后再按照上面的步骤指定就可以了。

虽然问题很久了,但是今天刚好遇到了,就来回答一下,万一别的同学也遇到的话可以来看看:

点击setting--》plugins--》找到“AndroidSupport”选项,并勾选,然后会提示重启androidstudio,点击重启,ok,如果已经设置好SDK的路径的话,问题解决,如果还没有设置SDK路径,这时候,再如下操作:

设置好自己的SDK路径和JDK路径,以及NDK路径(需要的话)。

“androidstudio”需要安装sdk。Androidstudio安装完后会自带sdk的,如果没有sdk的话,程序是无法编译运行的,sdk的路径自己可以修改。

温馨提示:在安装AndroidStudio之前,建议先提前准备好单独的AndroidSDK,这个可以在AndroidDevTools网站下载。以前用Eclipse做过Android开发的人,就可以用现成的AndroidSDK。

AndroidStudio安装完成后,第一次启动AS前,为了避免重新下载新版本的SDK,需要做如下操作:

AS启动前,打开安装目录,请先将bin目录的idea.properties文件中增加一行:disable.android.first.run=true就行了,避免第一次打开AS时自动重新下载SDK。mac平台的右键安装包-ShowPackageContents就找到bin目录了。

第一次打开AndroidStudio时,需要配置JDK和SDK:

上图中,选择“ProjectStructure”,弹出如下界面:(选择JDK和AndroidSDK的路径)

当然,以后我们在使用AndroidStudio的时候,也可以随时修改JDK和AndroidSDK的路径。选择「File--OtherSettings--DefaultSructure」,即可进行同样的修改。

三、android studio ndk-build怎么配置环境

1、在开始配置Android Studio NDK环境之前,请确保您已下载并安装了Android NDK。下载完成后,需为您的项目设置NDK路径。具体操作是在项目的local.properties文件中添加一行ndk.dir=路径/ndk,其中“路径”为您的NDK安装路径。

2、接着,需要在项目的build.gradle文件中进行相应修改。打开build.gradle文件,进入android节点,添加ndkVersion'版本号',其中“版本号”为您的NDK版本号。

3、接下来,创建一个名为jni的文件夹。在jni文件夹下,创建一个新的C/C++源文件。为了便于后续开发,可以创建一个测试类文件,如创建一个名为MainActivity的Java类,该类中包含一个简单的测试函数。

4、然后,创建一个对应的头文件(.h文件)。在jni文件夹下,创建一个名为MainActivity.h的文件,其中定义测试函数的原型。紧接着,创建一个对应的实现文件(.cpp文件),在jni文件夹下,创建一个名为MainActivity.cpp的文件,其中实现测试函数的具体逻辑。

5、最后,进行测试。在MainActivity.java文件中,包含MainActivity.h头文件,并实现测试函数的调用。然后,运行项目,检查是否正确实现了C/C++代码。