android studio ndk工程开发及调试指南

注:1.Android Studio 版本>=1.4.1(支持 debug ndk)

        2.有时android studio的工程目录结构中看不到生成的so文件,这种情况并不是绝对没生成成功,此时so可能位于     工程目录\app\build\intermediates\binaries\debug\lib中


1、打开android studio创建一个空项目 包名自定义。


2、创建一个andorid  native接口类,在类中声明native接口,(例如:public static native String getStringFromC())


3、打开终端android studio的Terminal,默认会进入到当前工程的根目录下


4 、进入java目录执行命令:

                      javah -d ../jni com.example.NativeClass

                                             com.example.NativeClass是native函数的所在的包名和类名,中间使用“.”号分开。执行成功后会在src目录下生成jni目录,并且jni的.h已经在里面了。


5、打开local.properties文件配置上ndk目录

      ndk.dir=D\:\\software\\android-ndk-r11-windows-x86_64\\android-ndk-r11(这是我的ndk目录,根据自己的目录自定义))

6、打开build.gradle文件将

dependencies {  
   classpath 'com.android.tools.build:gradle:1.3.0'
}
中的classpath改为        classpath 'com.android.tools.build:gradle-experimental:0.4.0'


7、打开gradle-wrapper.properties文件将
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
改为
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip


8、将与src目录同级下的build.gradle文件改为

apply plugin: 'com.android.model.application'

model {
   android {
       compileSdkVersion = 23
       buildToolsVersion = "23.0.1"

       defaultConfig.with {
           applicationId = "com.google.sample.helloandroidjni"
           minSdkVersion.apiLevel = 22
           targetSdkVersion.apiLevel = 23
           versionCode = 1
           versionName = "1.0"
       }
   }
   android.buildTypes {
       release {
           minifyEnabled = false
           proguardFiles.add(file('proguard-android.txt'))
       }
   }
}

9、配置ndk目录
打开“File” > “Project Structure” > “SDK Location>“Android NDK Location”配置你的目录地址到sdk location中


10、将与src目录同级下的build.gradle文件加入ndk modulename


apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "20.0.0"

        defaultConfig.with {
            applicationId = "com.google.sample.helloandroidjni"
            minSdkVersion.apiLevel = 18
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles.add(file('proguard-android.txt'))
        }
    }
    // New code
    android.ndk {
        moduleName = "hello_jni"
    }
}
11、点击 Run/Debug Configuration, 选择.


12、在c代码中加入断点


13、debug程序,没问题的话断点就打到了c代码中



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值