详细Android Studio Jni 调试

本文介绍如何在Android Studio中配置JNI与NDK环境,包括设置LLDB+NDK、配置NDK路径及快捷方式、设置调试工具等步骤,并详细说明了如何在Gradle中指定NDK版本与模块配置。

Android Studio + NDK来实现JNI.


一、   Android Studo 环境配置如下:

 (1).Android Studio下载LLDB+NDK并安装。



   




(2)配置安装好的NDK路径。


  


(3)配置一些快捷方式。


 




 
javah	用于生成头文件
	Program:$JDKPath$/bin/javah

	Parameters:-classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$
         Working directory:$ModuleFileDir$/src/main/Java

 
       ndk-build  用于构建so包
	注意:MAC/Linux用ndk-build,没有.cmd后缀
	Program:C:\Develop\Android\sdk\ndk-bundle\ndk-build.cmd
	Parameters:什么都不用填
	Working directory:$ProjectFileDir$/app/src/main

 
        ndk-build clean	清除so包
	注意:MAC/Linux用ndk-build,没有.cmd后缀
	Program:C:\Develop\Android\sdk\ndk-bundle\ndk-build.cmd
	Parameters:clean
	Working directory:$ProjectFileDir$/app/src/main
(4)配置调试工具
 

选择Defaults。
   



上面那个系统默认的是调试Java代码的。 
下面那个是调试c/c++代码的。
二、配置项目
(1)gradle-experimental与gradle-wrapper相对应的版本
在build.gradle中
dependencies {

    classpath "com.android.tools.build:gradle-experimental:0.7.0"

   // classpath 'com.android.tools.build:gradle:2.1.0-alpha1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
gradle-wrapper.properties中
#Mon Dec 28 10:00:20 PST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
gradle-experimental与gradle-wrapper相对应的版本号如下图
版本号对比

 (2)修改app->build.gradle

 

//apply plugin: 'com.android.application'
apply plugin: 'com.android.model.application'//使用新的

model {

    android {
        compileSdkVersion 24
        buildToolsVersion "24.0.2"

        defaultConfig{
            applicationId "com.silabs.blood_pressure_demo"
            versionCode 1
            versionName "1.0"
            minSdkVersion.apiLevel 17
            targetSdkVersion.apiLevel 24

        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles.add(file("proguard-rules.pro"))
            }
        }


        ndk {
            moduleName  "ppgecgs"   //<=====>LOCAL_MODULE  := ppgecgs
            ldLibs.addAll(["android","log"])    //  <==加载log
            stl  "gnustl_static"   //<===用C++静态库

        }

        productFlavors {      //加载app/src/main/libs

//        create("arm") {
//            ndk.abiFilters.add("armeabi")
//        }
//        create("arm7") {
//            ndk.abiFilters.add("armeabi-v7a")
//        }
//        create("arm8") {
//            ndk.abiFilters.add("arm64-v8a")
//        }


            create("all")  //全部
         }

        
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:24.2.1'
    compile 'com.google.android.gms:play-services-appindexing:8.4.0'
}

三、略jni知识,网上一大把资料。

    使用配置好android studo javah工具。


 

    


    使用配置好android studo  ndk-build / ndk-build clean工具。


   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值