Android的学习之路一

在Android的道路上越走越远==,本着一颗童心去学习,没想到最后会成为自己的职业。看到过知乎上写的,并不是兴趣使比尔盖茨以及乔布斯他们成就斐然,而是他们真正的牛逼使得即使买大饼也能成为世界首富。然而如果没有兴趣他们也不会寻求这一条路,现如今自己缺少的不是兴趣和激情,而是对代码对程序的积累,也就是实力的差距,希望能够通过一点一点的进步缩短实力的差距。程序员是需要不断反复思考积累的,仅仅写在这里对自己每天的学习有一个过程的了解。

学习之前不得不说的便是Android开发环境的搭载,在这里,我们不仅仅需要Java较为灵活方便的界面开发技术,也需要C以及C++的高效简洁。(其实本人更喜欢C,Java的确实大大方便了开发,然而写多了感觉懒得写C了,因为Java什么都几乎封装好了,而C在研究算法和底层中比起Java更为清晰高效)。或许只是对C的钟情,也或许是对效率的考虑,这里我们也希望搭载C和C++的接口,来对Java进行一个相辅相成的作用。利用Java的JNI便可以实现这种方式。

OK,接下来我们来搭载JDK,SDK,NDK,Eclipse的开发环境。

1. JDK的搭建

Java Develope Kit的环境搭载是所有Java相关开发的基础,这里我们选择1.7版本的(官网上有1.8版本的可自行下载)。

系统环境的配置(可参考http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html)

这个网上有许多的例子可以查看,具体就是在系统属性里面修改环境变量。

1.1 新建环境变量JAVA_HOME,变量值填写jdk的安装目录(本人是 D:\Java\jdk1.7.0)

1.2 编辑Path环境变量的值,增加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

1.3 编辑ClassPath环境变量的值,增加.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

1.4 环境搭载测试,在CMD下输入Java -version以及Javac -version,查看输出是否正确。若正确则JDK环境搭载成功。

2. SDK的搭建

首先SDK可以去官网上下载,鉴于天朝的有为,可以选择FQ也可以用一些镜像网站下载,这里推荐一个网站(http://wear.techbrood.com/)里面有非常多的android资源也包括下面介绍的ADT的下载。

由于在开发中经常需要在命令行中输入一些常用的命令,比如adb的许多命令等等,所以也有必要将这些命令所在的目录写进Path中,以方便程序的调试。

2.1 新建环境变量SDK_HOME,将SDK的目录填写入

2.2 编辑Path环境变量的值,增加%SDK_HOME%\platform;%SDK_HOME%\platform-tools;

2.4 环境搭载测试,在CMD下输入adb,查看输出是否正确。若正确则JDK环境搭载成功。

3. NDK的搭建

和上面JDK以及SDK差不多==,理解就好~~~

4. Eclipse的环境搭建

这是所有环境的结局楼,如果上述JDK和SDK以及NDK均OK了,那么进入这一步,将所有的工具路径完善到Eclipse中。

5. JNI的检查是本次的重点介绍

5.1 Android的项目新建

首先新建一个Android的项目

5.2 然后再Android的工程上右键点击Android Tools->Add Native Support并给.so文件取个名字。这时候工程就会多一个jni的文件夹,jni下有Android.mk和XXX.cpp文件。Android.mk是NDK工程的Makefile,XXX.cpp就是NDK的源文件。

JNI接口的命名规范是:Java + 调用该方法的包名类名 + 方法名,对于实例方法,有两个参数是必要的,一个JNI的环境指针JNIEnv *,另一个是调用该方法的Java实例jobject

#include <jni.h>

#include <string.h>

extern "C"

_jstring*  Java_com_cgf_helloworldndk_MainActivity_jniTest(JNIEnv* env,jobject thiz)

{
    return (env)->NewStringUTF("hello from jni by  ndkTest!");
}

5.3 加载XXX库

使用ndk库必须在static代码块里面用System.loadLaibrary加载.so库

public class MainActivity extends Activity {

    static {
        System.loadLibrary("my-ndk");
    }

    // 声明JNI层的原生方法,使用native关键字
    public native String stringFromJNI();

    private TextView textView = null;

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView textView = (TextView) findViewById(R.id.textView);        textView.setText(jniTest());    }
}

5.4 遇到Unable to launch cygpath. Is Cygwin on the path?错误,解决办法如下:

5.4.1 工程右键,点Properties->C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd

5.4.2 在C/C++ Build中点击Environment,点Add...添加环境变量NDKROOT,值为NDK的根目录

尝试一下吧,在View内会看到所写的C代码已经被成功调用了。

终于完成了,虽然简单,但是一步一步下来,不要犯错也很重要的,去搭建自己的开发环境吧~~~(困死的程序员,据说要在Linux下进行开发,还是有点小慌的,加油以及睡觉)

时间: 2024-09-29 23:40:05

Android的学习之路一的相关文章

Android开发学习之路--网络编程之xml、json

一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载xampp,然后安装之类的就不再多讲了,参考http://cnbin.github.io/blog/2015/06/05/mac-an-zhuang-he-shi-yong-xampp/.安装好后,启动xampp,之后在浏览器输入localhost或者127.0.0.1就可以看到如下所示了: 这个就

Android的学习之路(二)项目中原生文件的使用场景和文件介绍

1.src文件:java源代码存放目录 2.gen 文件:自动生成所有由android开发工具自动生成的文件,目录中最重要的就是R.java文件,这个文件由android开 发工具自动产生的.android开发工具会自动根据你存放res目录的资源,同步更新修稿R.java文件,正因为 R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java.R.java文件在应用中起到了字典的作 用,它包含了各种资源的ID,通过R.java,应用可以很方便的找到对应资源, 2.1R.java 

Android的学习之路(三)项目的启动过程和安装过程详解

应用的安装和启动过程: 安装:第一步:java的编译器会把这个.java文件编译成.class文件 第二部:Android的SDK提供了一个dx工具,这个工具把.class文件转义成.dex文件 第三部:打包操作,把.dex文件和资源文件进行打包,打包成一个压缩文件,然后进行签名.最后就打包成为了.apk文件 第四部:调用adb指令:adb install c:/x.apk安装到模拟器 具体过程:.JAVA---->.class--.dx-->.dex--->打包签名--->.ap

android开发学习之路——连连看之游戏逻辑(五)

GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖,程序需要GameService组件包含如下方法.   ·start():初始化游戏状态,开始游戏的方法.     ·Piece[][] getPieces():返回表示游戏状态的Piece[][]数组.     ·boolean hasPieces():判断Pieces[][]数组中是否还剩Piec

Android开发学习之路-RecyclerView滑动删除和拖动排序

Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开发学习之路-下拉刷新怎么做? 本篇是接着上面三篇之后的一个对RecyclerView的介绍,这里多说两句,如果你还在使用ListView的话,可以放弃掉ListView了.RecyclerView自动帮我们缓存Item视图(ViewHolder),允许我们自定义各种动作的动画和分割线,允许我们对It

Android的学习之路(一)开发环境的搭建

一直以来都是做IOS开发的,但是有时候需要将IOS的应用搬到Android平台上.但是自身的功底并不是很好,所以就得学习学习了,今天我就和大家一块来学习下Android的环境搭建. 1>下载并且安装Eclipse. Eclipse下载地址:http://pan.baidu.com/s/1pJtwLib 2>下载并且安装ADT插件 ADT插件下载地址:http://dl.google.com/android/ADT-22.3.0.zip 3>下载安装Android SDK Android

Android开发学习之路--Content Provider之初体验

天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下第三个android的组件,Content Provider内容提供器. Content Provider向我们提供了在不同应用程序之间的数据共享,比如微信啊,支付宝啊,想要获取手机联系人的信息,而手机联系人是另一个应用程序,那么这时候就需要用到Content Provider了.Content P

Android开发学习之路--UI之ListView

这里再学习写android的ListView,其实我们都使用过ListView,就像手机的联系人,就是用的ListView了.下面就实现下简单的ListView吧,首先是xml文件中添加相关的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andr

Android开发学习之路-记一次CSDN公开课

今天的CSDN公开课Android事件处理重难点快速掌握中老师讲到一个概念我觉得不正确. 原话是这样的:点击事件可以通过事件监听和回调两种方法实现. 我一听到之后我的表情是这样的: 这跟我学的看的都不一样啊,这还分监听和回调.这个时候我立马提出问题,嗯,讲课老师看到了. 老师就说了:是不一样的,我们第四点(最后一点)会讲. 好,我立马坐好准备受教听了大半小时.听到最后我的表情是这样的: 废话说够了,开个小玩笑,不要见怪. 我们都知道,监听事件其实只有一种,就是回调.如果有人不明白什么是回调?可以