关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android Studio使用新的Gradle构建工具配置NDK环境

    Android Studio使用新的Gradle构建工具配置NDK环境

    2015-09-17 00:00:00 出处:胡凯
    分享

    从Android Studio 1.3 Beta1开始,就支持了NDK。不过使用的是一个全新的实验性的gradle构建工具。官方地址 http://tools.android.com/tech-docs/new-build-system/gradle-experimental ,英文好的可以直接看原文。

    在进行配置前请先将Android Studio更新至最新版本,目前最新版本是1.4 Bata4

    Android Studio使用新的Gradle构建工具配置NDK环境

    并且使用Android Studio内置的SDK管理器下载NDK。

    Android Studio使用新的Gradle构建工具配置NDK环境

    或者在项目上右键打开Project Structure,切到的SDK Location页进行安装

    Android Studio使用新的Gradle构建工具配置NDK环境

    注意这个NDK安装好后其目录在SDK目录下的ndk-bundle目录下,与以往的不同。

    要修改的文件见下图

    Android Studio使用新的Gradle构建工具配置NDK环境

    首先需要将根目录下的gradle修改为实验性的gradle

    classpath 'com.android.tools.build:gradle-experimental:0.2.0'

    最终是这样的

    Android Studio使用新的Gradle构建工具配置NDK环境

    并且需要gradle 2.5的支持,将gradle/gradle-wrapper.properties中的版本修改为2.5

    distributionUrl=https/://services.gradle.org/distributions/gradle-2.5-all.zip

    最终是这样的

    Android Studio使用新的Gradle构建工具配置NDK环境

    然后修改原来的app/build.gradle,注意现在各项配置都是有等号的,并且使用的是 com.android.model.application而不再是原来的com.android.application,假如是Library,则 是com.android.model.library。然后android外围包了一层model。原来在android里面的buildTypes 移到了外面。等等,看下面内容,注意变化。

    apply plugin: 'com.android.model.application'
    model{
      android {
        compileSdkVersion = 22
        buildToolsVersion = "23.0.1"
        defaultConfig.with {
          applicationId = "com.kltz88.car.jnidemo"
          minSdkVersion.apiLevel = 14
          targetSdkVersion.apiLevel = 22
          versionCode = 1
          versionName = "1.0"
        }
        tasks.withType(JavaCompile) {
            //指定编译JDK版本
          sourceCompatibility = JavaVersion.VERSION_1_7
          targetCompatibility = JavaVersion.VERSION_1_7
        }
      }
      android.ndk {
        moduleName = "test"
        ldLibs +="log"
        abiFilters +="armeabi"
        abiFilters +="armeabi-v7a"
        abiFilters +="x86"
      }
      android.buildTypes {
        release {
          minifyEnabled = false
          proguardFiles += file( 'proguard-rules.pro')
        }
      }
    }
    dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.android.support:appcompat-v7:22.2.1'
    }

    在android.ndk中进行ndk的配置,模块名字是必须的。然后使用了log,并且支持armeabi,armeabi-v7a,x86三个平台。

    然后增加jni目录,在main上右键新建jni目录

    Android Studio使用新的Gradle构建工具配置NDK环境

    在弹出的窗口中你可以修改jni目录,默认是在main/jni中

    Android Studio使用新的Gradle构建工具配置NDK环境

    新建一个Test的类,加载jni库,声明native方法

    public class Test { static {
            System.loadLibrary("test");
        } public native void test();
    }

    这时候你会发现test方法是红色的

    Android Studio使用新的Gradle构建工具配置NDK环境

    在上面按alt+enter生成c层的方法

    Android Studio使用新的Gradle构建工具配置NDK环境

    修改为下方的代码

    #include <jni.h> #include "android/log.h" JNIEXPORT void JNICALL
    Java_com_kltz88_car_jnidemo_Test_test(JNIEnv *env, jobject instance) {
        __android_log_write(ANDROID_LOG_ERROR,"TAG","TEST");
    
    }

    假如你需要生成头文件,使用命令行即可

    Android Studio使用新的Gradle构建工具配置NDK环境

    之后会在jni目录生成对应的头文件

    Android Studio使用新的Gradle构建工具配置NDK环境

    然后在java层调用

    public class MainActivity extends AppCompatActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Test t=new Test();
        t.test();
      }
    }

    便会看到日志的输出。

    Android Studio使用新的Gradle构建工具配置NDK环境

    注意假如没有在gradle中指定java的对应版本,运行时可能会报错

    tasks.withType(JavaCompile) {
                //指定编译JDK版本
                sourceCompatibility = JavaVersion.VERSION_1_7
                targetCompatibility = JavaVersion.VERSION_1_7
            }

    错误信息如下,遇到该错误加上上面的代码即可

    Android Studio使用新的Gradle构建工具配置NDK环境

    最后就是调试的问题了,理论上来说应该是支持调试的,但是我在windows上并没有试验成功。下面贴出步骤。

    Android Studio使用新的Gradle构建工具配置NDK环境

    增加native运行方法

    Android Studio使用新的Gradle构建工具配置NDK环境

    修改为

    Android Studio使用新的Gradle构建工具配置NDK环境

    然后下断点,理论上是能调试的,但是我遇到了下面的问题,导致无法继续,也查过了,查不出问题所在,就这样吧,改天在linux下试试是不是正常。

    Android Studio使用新的Gradle构建工具配置NDK环境

    你会发现整个流程下来,原来的Android.mk和Application.mk都不再需要了,所有配置在gradle中配置即可。

    官方的github示例代码

    https://github.com/googlesamples/android-ndk

    我的示例代码

    http://download.csdn.net/detail/sbsujjbcy/9108775

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。