Android Studio + NDK范例

【本范例所采用的配置】

·系统:Windows7 旗舰版,Service Pack 1,32位(最新的NDK已不支持WindowsXP)
·JDK(java包):1.7版
·Android Studio(制作安卓程序的主要工具):1.4版
·SDK(安卓开发工具包):Android Studio 1.4自带的
·NDK(原生开发工具包,用来做安卓程序的C/C++部分):用Android Studio 1.4内置的链接下载
·Experimental Plugin(一个实验版插件,目前NDK必不可少的助手):NDK自带的
·gradle(负责安卓程序的编译):2.5版(目前NDK只支持gradle2.5,版本高了低了都不行)

一、安装JDK 1.7


重要的是记住安装路径。我的电脑是双系统,Windows7在D盘上,所以我装java的路径是“D:\Program Files\Java\jdk1.7.0_71”。
过去,在WindowsXP中使用Android Studio,装java要避免带空格的路径,现在Windows7没有这个限制了,你按默认的路径安装即可。


二、给java设环境变量


在电脑桌面左下角点“开始”按钮,然后依次选“控制面板”、“系统和安全”、“系统”、“环境变量”,打开“环境变量”对话框,这里有两个“新建”按钮,点下面那个(再次强调,是下面那个),建一个新的系统变量,名为“JAVA_HOME”,值为java的安装路径(我的是“D:\Program Files\Java\jdk1.7.0_71”)。


 



再建一个新的系统变量,名为“CLASSPATH”,值为“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”,注意前面有点和分号。
找到已有的系统变量“PATH”,双击它,打开编辑它的窗口,在变量值的末尾加“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”,注意前面有分号。


总结刚才的3个环境变量:
·JAVA_HOME(新建的) java的安装路径
·CLASSPATH(新建的) 
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
·PATH(改原来的)   ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(加在原值的后面)
改完之后一连串的“确定”,使这些变量得以保存。
验证java是否装好的方法:在DOS窗口中输入java -version回车,若看到版本信息,就是装好了。


三、安装AndroidStudio1.4及NDK


安装过程略。从提示文字上可以看到,这个版本Android Studio把SDK也一并安装到你电脑里了。
若不带SDK,就要单独下载和安装SDK,过后还要在Android Studio中填写SDK安装路径。
装好之后先别着急启动,在Android Studio的安装目录中找到bin文件夹,在其中找到idea.properties,用记事本打开,在其末尾添加一行并保存:
disable.android.first.run=true
如果Windows7不让你修改这个位于系统盘的文件,那就把它拷贝到别的地方修改,再拷回去覆盖原文件,这是可以有的,因为Windows7允许系统盘更换文件,只不过先问问你是不是管理员。
做这件事,是为了防止Android Studio启动时不停地连google服务器(在不翻墙的情况下根本连不上,只能让程序停在那儿不动)。
然后启动Android Studio,如果走不动,多半是因为java没装好。
出现“Welcome...”窗口后,选“Configure”、“Project Defaults”、“Project Structure”,打开“Project Structure”窗口:


 



你第一次启动时看到的窗口不是这样的,“Android NDK location”中没有东西,可能“JDK location”中也没有。
“Android SDK lication”肯定有了,因为SDK是这个版本自带的,它装好了,路径也就自动填上了。但JDK可能需要你手工填写,把java的安装路径填进去(也就是刚才设环境变量“JAVA_HOME”时填的路径)。
至于NDK,先要安装。
尚未安装NDK时,在此窗口的“Android NDK location”下会有一个按钮让你安装,点它按提示进行,在翻墙的情况下,经过漫长的等待,Android Studio告诉你在下SDK,其实也在下NDK,下载完在提示文字中就看到了,这是NDK。接着进入NDK安装,这用不了多久。装好后就自动填上了NDK的路径,就成了上图的样子。
有人说翻墙麻烦,不如找一个国内的链接下载NDK,安装,把地址告诉Android Studio。但这样一来,只能在项目中填写NDK地址,不能在整个程序中固定它。
而且google的官网建议用Android Studio内置的链接下载NDK,版本是r10e,必须装在SDK目录下的ndk-bundle文件夹中,配套的gradle只能是2.5版,SDK至少是19.0.0版且带生成工具(参阅tools.android.com/tech-docs/new-build-system/gradle-experimental),既然这么麻烦,还不如直接用Android Studio内置的链接下载。
如果你永远不需要在项目中写C或C++代码,就不用管NDK了,gradle也就用Android Studio自带的就行了,下一步也就免了。
在这里还要为NDK设环境变量:
NDK_ROOT(新建) NDK的安装路径
PATH(结尾增加) ;%NDK_ROOT%




四、安装gradle


下载的gradle是个压缩文件,把它解压成一个文件夹,放到Android Studio自带的gradle文件夹旁边,

  



gradle-2.4是Android Studio 1.4原配的,gradle-2.5即将取代它的,是NDK要求的。


五、安装手机驱动


Android Studio有模拟器供你调试,但最好用真机,一是真机调试快,二是能表现所有功能、暴露所有问题。
1. 把安卓手机用数据线连在电脑的USB口上,就是你充电用的那根线,把插头拔下来,只用线,线的细的那头插在手机上,粗的那头插在电脑的USB口上。
2. 在手机的“开发者选项”中勾选“USB调试”。不同的手机品牌或安卓版本,这个选项的位置有所不同,我手头这个手机,点“设定”按钮后可以看到一串选项的底部有“开发者选项”,点开它可以看到“USB调试”这个选项。你的手机怎么样,自己找找吧。
3. 安装该手机的驱动程序。可以装“360手机助手”、“91手机助手”之类的,它发现电脑连上手机,就会自动下载该手机的驱动程序,当它显示手机型号时,驱动就装好了,360手机助手是把手机型号显示在左上角的。这时手机上也会出现USB图标,拉开它会看见“已连接为媒体设备”。
还有一个迹象表明手机驱动装好了——电脑的设备管理器显示“Android Phone”
Android Studio第一次识别手机可能比较慢,可能要依赖“360手机助手”这样的软件来装手机驱动,可能在驱动装好之后还是找不到手机,但重启电脑就找到了。或者还有种种稀奇古怪的问题,来回折腾碰巧哪一次找到了,以后就能找到了。手机软件开发就是这样,搞不明白就折腾,碰运气,奇怪的是问题总能解决,要真是永远解决不了倒好了,再也不用受它的气了。
说了这么多,就是一连手机,二装驱动,三看软件找到手机没有。
找到手机,Android Studio会显示手机型号,在界面下方点“Android Monitor”选项卡,就可以看到手机型号。


  




【入门练习】

一、建新项目


重新启动Android Studio,在“Welcome...”窗口中选“Start a new Android Studio project”,按提示一步一步“Next”。
首先是起名:
Application name(应用名):就是你要做的程序的名称,也将是项目名称。
Company Domain(公司名):一般的格式是“类别.部门.公司”,这个练习只使用了“类别.部门”,填的是“exercise.myself”,意思就是“我自己.练习”。
你修改上面两项,软件就会自动更新下面的一项:
Package name(包名):这很重要,是你的程序的标识,C/C++代码会引用它。你不必现在记住它,因为写代码时随时可以在java代码中查到它。
然后是项目路径:
Project location(项目路径):就是说这个项目的文件装在哪一个文件夹里,这个可以随便设,只要自己记得住。
后面有一步选模板,最好选“Empty Activity”,其他模板会给你预备一堆没用的组件。


二、改gradle代码


对于不需要C/C++的项目,这一步完全可以跳过。但是不需要C/C++,也就不用看这篇文章了。
打开项目后,在界面左上方选“Project”,再把目录展开成这样:


  



上图中选中的“gradle-wrapper.properties”,是马上要修改的。它在目录中的位置,可表示为“gradle/wrapper/gradle-wrapper.properties”。
双击它,就在界面右边看到了它的代码,将“2.4”改成“2.5”,如下图所示。
这么改,是因为目前的NDK只支持gradle2.5,版本高了或低了都不行。


  



如法炮制,修改build.gradle,将“:1.3.0”改为“-experimental:0.2.0”。
这是因为目前的NDK需要一个叫“experimental”的插件,它目前的版本是0.2.0。
注意:在现在以及后面的代码修改中,一个字符也不要错,仔细看本文的说明,一个冒号、一个点也不要漏掉,不然调试时报错,你都看不懂(调试不会说“你这里缺了一个分号”,它只会说一句让你丈二和尚摸不着头脑的话,甚至跟真正的错误八竿子也打不着)。
改完之后,立刻会冒出一个***警告,说gradle已经被你改了,你得在项目中更新它。这件事待会儿再做。

  


接下来修改app/build.gradle(注意,有两个build.gradle,刚才改的是根目录下的,现在改的是app目录下的)。
这里要改的地方特别多,先用纯文本标一下(你别复制这段代码,因为可能有些数字和你的项目不匹配,你就照着这个模板改你的代码)。
再次提醒:必要的地方,一个字也别漏掉,一个也别多,哪怕是一个大小写的区别。


apply plugin: 'com.android.model.application' //红色代码是新加的

model {
    android {
        compileSdkVersion = 23 //这些数字是软件根据你选择的版本自动写的,不必改
        buildToolsVersion = "23.0.1"
         defaultConfig.with {
            applicationId = "myself.exercise.ndktest" //这是程序包名,用你自己的
          minSdkVersion.apiLevel = 11
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName = "1.0"
         }
         tasks.withType(JavaCompile) {
            sourceCompatibility = JavaVersion.VERSION_1_7
             targetCompatibility = JavaVersion.VERSION_1_7
         }
    }
    android.ndk {
        moduleName = "lb" //这是将来so文件的名称,自己取
    }
    android.buildTypes { //蓝色代码是移动了的
        release {
            minifyEnabled = true
             proguardFiles.add(file("proguard-rules.pro")) //紫色代码是改过了的
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //testCompile 'junit:junit:4.12' //灰色代码的句子,你看到了就删
    compile 'com.android.support:appcompat-v7:23.0.1'
    //compile 'com.android.support:design:23.0.1'
}

改完了再一行一行检查,这要是错了,调试会痛苦不堪。
说到这里得提一下google的态度,把这么麻烦的事交给用户,他们自己也挺不好意思的,在官网上说,因为NDK还是实验版,不得已才让用户自己改代码,他们会逐渐让这些东西自动化。


三、更新gradle

现在来解决那个***警告的问题。
警告右边有一个“Sync Now”链接,点它,故意引发报错:


  



它是说,现在的gradle是2.4版的,你设置了2.5,就得找到2.5的安装路径。
正如前面所说,目前的NDK只支持gradle2.5,这也就是为什么我们在安装阶段就把2.5放在2.4的旁边。


在上述报错窗口中,点“Gradle settings”,打开如下窗口:


  



点“gradle-2.4”旁边的“…”按钮,去找你已经安装好的gradle-2.5。之后报错信息没有了,程序会重建gradle。



四、关于实验版插件

还有一个隐藏的家伙一直没有露面,但是跟着NDK一起进入了你的Android Studio,悄悄地进村,打qiang地不要,它就是Experimental Plugin,是C++制作必不可少的。刚才改“build.gradle”已经提到了它,就是“experimental:0.2.0”。
目前Android Studio的C/C++开发离不开这三个家伙(而且对它们的版本有严格限制):
·NDK(原生开发工具包,Native Develop Kit)r10e版;
·gradle2.5版;
·Experimental Plugin(实验版插件)。
总结一下它们的来历:
·你单独下载安装了gradle2.5
·用Android Studio内置的链接下载、由Android Studio自动安装了NDK
·NDK悄悄带来了实验版插件
关于此插件的详情,参阅tools.android.com/tech-docs/new-build-system/gradle-experimental
关于NDK,参阅developer.android.com/intl/zh-cn/ndk/index.html、tools.android.com/tech-docs/android-ndk-preview

五、创建jni文件夹

在app/src/main文件夹上点右键,在弹出菜单中选择“New”、“Folder”、“JNI Folder”,按提示进行。
有一个“Change Folder Location”选项,不需要勾选,因为jni文件夹采用默认的位置(在main文件夹中)就行。
然后main目录下会出现jni文件夹。


六、创建C++源文件

在jni文件夹上点右键,在弹出菜单中选择“New”、“C/C++ Source File”。
在出现的对话框中,给即将创建的C++文件取名(不要加后缀,软件会自动加上的)。
有一个选项“Create associated header”,不要勾选它,现在不需要创建头文件。


之后,jni文件夹中出现了“myCode.cpp”,我们先不管它,先到Android部分做一些准备工作。


  



七、建一个演示按钮


这是纯Android操作,可能你已经熟悉了,但初学者需要知道。
编辑主窗口的xml文件(在此范例里是“activity_main.xml”)。如果你在界面上看不到它,就到Project目录的“app/src/main/res/layout/”中找到它,双击它打开编辑窗口。
窗口中有个手机图样,是模拟软件显示的效果,上面有一行字“Hello World”,是AndroidStudio自动加上的显示文字的控件。双击它,会打开一个小窗口,上面有“id”栏,在这里给该控件取名为“textView”(实际上可以随便取,但为了和后面的步骤衔接,就取这个名吧),这是java代码将要引用的。
再添加一个按钮,方法是:在左边的组件列表中找到“Button”,拖到手机图上。
当然你也可以用编辑代码的方式加这个按钮,这里对纯Android操作只说最简单的方法。
双击这个按钮打开小窗口,给它的“id”取名叫“button1”。
然后点上方的“MainActivity.java”选项卡,进入主窗口代码编辑界面,把代码改成这样:


package myself.exercise.ndktest;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {


    TextView textView; //声明一个标签
    Button button1; //声明一个按钮


    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        textView = (TextView)findViewById(R.id.textView); //在xml中找到标签

button1 = (Button)findViewById(R.id.button1); //在xml中找到按钮

button1.setOnClickListener(new View.OnClickListener() {
            @override
            public void onClick(View v) {
                //点按钮以后发生的事
            }
        });
    }
}


新手注意:顶端的这一句:“package myself.exercise.ndktest;”,表明这个项目的包名是“myself.exercise.ndktest”,以后引用包名时,可以到这儿来拷贝。
另外,在Android Studio中输入类名(比如“TextView”)时,如果你没写错它却显示为红色,表明Android Studio还没有识别这个名称,上面的“import”还缺点什么,你有两种办法:


1. 重新输入它,等待一个提示框出现,再按Tab键,Android Studio会自动帮你完成输入,把相应的“import”添加到代码中,比如添加“import android.widget.TextView;”,这时就不报错了。

2. 单击它,当提示框出现时,按“Alt + 回车键”。


八、建一个新的java类,用来加载C++库


在“Project”目录中找到“app/src/main/java/myself.exercise.ndktest”:


  



在这个文件夹上点右键,在弹出菜单中选择“New”、“Java Class”,在弹出窗口中取名“Load”(不要加后缀,软件会自动加上的):


 

</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值