使用Android Studio 1.3 版本进行NDK开发

众所周知Android Studio 1.3 版本新增了NDK支持,能够很方便的在上面开发C++或者C代码了,可是预览版功能不是非常完善,需要很多步骤,还有一些奇怪的BUG,整了半天终于可以使用Android Studio完美进行NDK开发了.先看下效果图:

方法:

一.首先将Android Studio更新到1.3版本:

1.检查Android Studio更新.

有些人可能会遇到问题:自己版本低于1.3检查更新却提示已经是最新版本?

那是因为更新渠道不是Beta渠道,需要先将渠道设置为Beta渠道才能更新到1.3:

然后重新检查更新就可以更新到1.3了.

二.将gradle切换到实验版本.

根据Google官方提供的方法修改Gradle文件.(官方说法为测试版本不完善,需要手动修改Gradle文件以便兼容Gradle实验版,他们会在release版本中实现程序自动修改Gradle)

Google原文链接:http://tools.android.com/tech-docs/new-build-system/gradle-experimental

1.将Gradle更新到2.5版本.

在这里将GradleVersion改为2.5 点击OK键就会开始自动更新Gradle了.

2.Android NDK r10e ,将NDK更新到这个版本

3.BuildTools版本要求大于19.0.0

4.红色标注的3个文件是需要手动修改的文件.

5.修改gradle-wrapper.properties文件内容为如下:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip

6.修改Project(非Module)下的Gradle文件,将gradle版本改为实验版本(红色标注部分):

(classpath ‘com.android.tools.build:gradle-experimental:0.1.0’)

7.修改Module下的Gradle文件(新版Gradle语法有了很大的改变,红色标注为需要修改的部分,注意dependencies在model外面):

在android{}外面要使用model{}来包括了,所有赋值都变为了=号,新增项变为了+=,buildTypes{},productFlavors{}和sources{}挪到了android{}外面.

再上一份我的Module的配置:

apply plugin: ‘com.android.model.application‘
model{
    android {
        compileSdkVersion=19
        buildToolsVersion="22.0.0"
        defaultConfig.with {
            applicationId = "com.example.stronghope.jnitest"
            minSdkVersion.apiLevel = 9
            targetSdkVersion.apiLevel = 19
            versionCode = 1
            versionName = "1.0"
        }
        tasks.withType(JavaCompile) {
            //指定编译JDK版本
            sourceCompatibility = JavaVersion.VERSION_1_7
            targetCompatibility = JavaVersion.VERSION_1_7
        }
    }
    android.ndk {
        moduleName="JniTest"
        ldLibs +="log"
        ldLibs += "z"
        ldLibs += "m"
        abiFilters +="armeabi"
        abiFilters +="armeabi-v7a"
        abiFilters +="x86"
    }
    android.buildTypes {
        release {
//            isMinifyEnabled = false
//            proguardFiles += file(‘proguard-rules.pro‘)
        }
    }
}
dependencies {
}

实验版Gradle在某些机子上可能会有BUG,如果编译的时候报了如下错误,需要在android{}中添加tasks.withType指定较低的JDK编译版本(1.6或1.7):

bad class file magic (cafebabe) or version

最后在local.properties文件中指定NDK目录即可愉快的进行NDK开发啦:

ndk.dir=”你的NDK目录”

三.NDK开发

1.配置Gradle中ndk编译参数(只需要在Gradle中配置,就可以完全脱离书写Android.mk和Application.mk文件来编译啦):

ldLibs项相当于Android.mk中的LOCAL_LDLIBS参数.

abiFilters相当于Application.mk中的APP_ABI参数.

2.在Main文件夹下新建JNI文件夹(默认目录,如需修改可以在Gradle中指定 jni.srcDirs)

3.定义JNI java类:

public class JNI {

    static{
        System.loadLibrary("JniTest");
    }

    public static native void testLog();
}

4.使用javah命令生成头文件(不生成头文件也可,当C++中没有方法实现时,方法名为红色,直接在方法上alt+enter 选择create XXXX 就可以自动在C++文件中生成方法,很方便啊):

打开cmd,cd到java目录下,使用命令:

javah com.example.stronghope.jnitest.JNI

生成头文件,将头文件剪切到jni目录下.

自动生成方法:

5.在jni目录下新建C++文件:

JniTest.cpp

6.引入头文件,编写C++代码:

7.运行Android项目,在控制台得到如下输出:

好啦一个简单的Jni程序就实现了,使用Android Studio来进行NDK开发真的非常方便!坐等release版本出来o(∩_∩)o

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 00:36:22

使用Android Studio 1.3 版本进行NDK开发的相关文章

NDK开发 从入门到放弃(七:Android Studio 2.2 CMAKE 高效NDK开发)

前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的. 1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要正确,甚至要记得住所有的jni函数等,真是太折磨人了-平时写java代码的时候都是写几个字母会出来一大堆提示然后选择的,这样还有一个好处就是很多时候我们不知道有那些函数,但是我们可以通过obj.,然后就可以看到它有哪些方法函数了. 2. 很多地方会显示为红色,就像是错误提示的那种,当然,如果没错的话还是能编译运行的,但是如

Android Studio 2.3版本 Run项目不能自动启动APP的问题 (转)

参考: http://blog.csdn.net/lucasey/article/details/61071377 Android Studio 升级到2.3版本后 运行项目后,只是安装上了,而APP不能自动打开: 看到官方解释:Known issue: Some device manufacturers block apps from automatically launching after being installed on the device. When deploying your

Android Studio 中 gradle 版本问题

在 android studio 目录下有一个默认的 gradle 文件夹,新建项目时使用的就是此 gradle 文件夹名显示版本号为 2.10 一个项目的工程目录如下 其中 gradle\wrapper\gradle-wrapper.properties 最后一行的网址中显示此项目使用的 gradle 版本 即:distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip 说明此项目使用的是 2.1

教你如何使用android studio发布release 版本【转】

原文链接 想必还有人对如何在Android studio (以下简称as)发布release版本的app而狂刷百度吧?都是过来人,我很理解这种心情,百度到的基本是半成品,为什么这么说呢?百度一下,你就知道,好了,不废话了,下面奉上完整的教程. 一.前提 发布release 版本,首先,的需要保证当前的app没有bug.可以正式发布了,嘿嘿,就是这样~~ 二..准备jks .jks即密钥库,是一种包含一个或多个私钥的二进制文件,只要记住,他就相当于人的指纹一样重要就行了.切记!必须在应用的整个生命

Android Studio 2.3版本 以及相应的gradle包

//androidStudio2.3.0版本链接:http://pan.baidu.com/s/1c2GI7i4 密码:3sko //android-studio-bundle-162.3764568-windows.exe下载地址 链接:http://pan.baidu.com/s/1i4DAupf 密码:zgns //配套的gradle-3.3-all的下载地址 //用户名更换成个人的用户名(需要解压)下载的gradle包存放地址:C:\Users\用户名\.gradle\wrapper\d

解决Android Studio 3.x版本的安装时没有SDK,运行时出现SDK tools错误

好久没更新了,最近手机上的闹钟APP没一个好用的,所以想自己写个. 那Android开发环境搭起来,注意先装好jdk. 1.安装Android Studio google的Android开发网站已经有中文版本,不用跨越GFW就能访问:https://developer.android.google.cn/ 乍一看,感觉Android Studio的安装包小了不少,既然官方提供,下载来安装再说. 安装过程中组件选择时就两个,让我明白为啥安装包小了,但也多了另一个疑问:SDK去哪了?(因为之前2.x

苹果电脑获取Android Studio的发布版SHA1和开发版SHA1

最近开始转战安卓,准备把我在苹果上的应用也在安卓上来一波,其中就遇到一个问题就是最牛天气(iOS和微信小程序都已经有了,就差安卓的了)引用的百度的定位功能,需要填写发布版SHA1和开发版SHA1,作为安卓的入门选手表示一脸懵逼啊,直接百度吧,看教学视频太浪费时间了,而且在苹果电脑上教Android Studio的教学视频不是太多,可能就没有,也没有搜. 其实很简单. 1.开发版的SHA1这个很好获取,因为一个项目建好之后就是开发环境,所以很简单. 打开ITerm,找到主目录(默认的就是),cd

使用Android Studio和Genymotion模拟器搭建Andriod开发环境

一.Android Studio下载 1.打开http://www.android.com/ 2.依照下图步骤打开下载页面 a.在页脚部分点击“App Developer Resources” b.点击“Develop” c.点击“Tool” 4.点击下载按钮下载 二.安装Andriod Studio 1.请先确保JDK已正确安装. 2.双击安装文件,选择Studio安装路径,以及SDK安装路径,进行安装即可. 三.集成Genymotion模拟器 1.安装VirtualBox Genymotio

android studio导入工程版本问题

由于IDE经常更新,一些工程导入无法运行..... (路径必须英文名..) 找一个自己最近的工程(也可以创建一个)打开如下: 选中图上的两个文件,右键复制.. 然后找到你要导入的工程,打开(把上面的两个文件粘贴进去) PS:如果不用运行到这就可以了,已经可以快速导入查看了... ------------------------------------------------------------------------------ 导进去一般会出现如下问题: 然后在自己创建的工程里(我的):