Android的學習之路一

來源:互聯網
上載者:User

標籤:

  在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下進行開發,還是有點小慌的,加油以及睡覺)

Android的學習之路一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.