編輯:關於Android編程
本篇博客主要記錄NDK開發之入門小demo,雖說NDK開發包裡面有hellojni的項目,但是博主還是記錄一下學習的過程吧.AS2.2現在對NDK支持的已經很好了,但是博主學習NDK還是采用eclipse作為工具,學的是一個思路,工具只是使用方式不同,所以不用糾結工具的事情了哦
創建好我們的工程之後呢,我們需要先書寫一個本地方法來使用JNI
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // 按鈕的點擊事件處理 public void bt_click(View v) { Button bt = (Button) v; bt.setText(getString()); } /** * 調用c代碼返回一個字符串 * * @return */ private native String getString(); }
可以看到我們的代碼很簡單,點擊按鈕觸發bt_click事件,然後獲取本地方法返回的字符串,然後顯示在按鈕上,這時候我們的app層面的代碼已經寫好了,本地方法是需要我們使用c代碼去實現的
右鍵項目添加本地支持
這個是幫你創建的動態鏈接庫的名稱,也就是我們經常使用的第三方sdk中經常看到的.so文件,點擊確定
確定以後你會發現在項目中多了一個文件夾jni,裡面還有一個.cpp的文件,還有個Android.mk文件
我們更改.cpp後綴為.c,然後打開這個文件
裡面沒有任何的代碼,這是需要我們自己去寫Activity中那個本地方法的實現的
右鍵項目拿到項目的目錄
來到項目的目錄下面,並且進入src目錄
使用cmd進入該目錄
生成頭文件
後面的是你的activity的包名+Activity名稱
成功就是不提示任何信息,如果你的activity中有中文會失敗,提示不可映射的字符
成功之後在src目錄中生成了一個頭文件
我們打開它,復制其中的實現方法
紅色框框裡面的就是我們需要復制的代碼,然後我們復制到我們的.c文件中,去掉最後的封號,加上一對花括號,然後在括號中加上變量的名字,然後我們返回一個字符串
#includeJNIEXPORT jstring JNICALL Java_com_xiaojinzi_jnidemo_MainActivity_getString (JNIEnv * env, jobject jb){ return (*env) ->NewStringUTF(env,"welcome to JNI world"); }
實現方法必須是以下的格式:Java_包名_類名_方法名
NewStringUTF是一個JNI中的函數,現在可以先不管,知道他能返回一個字符串就行了,內容是後面的
"welcome to JNI world"
這時候我們的實現方法寫好了,然後我們需要生成.so文件
在jni文件夾中新建一個Application.mk文件,裡面的內容為
APP_ABI := all
就一句話,是表示生成支持所有平台的.so文件
注意還有一點,打開我們的Android.mk文件
這裡說明了實現的文件是哪個,我們剛剛改成了.c文件,所以這裡需要改成JniDemo.c
最後我們在activity中加載這個庫,就可以運行項目啦
public class MainActivity extends Activity { static{ System.loadLibrary("JniDemo"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void bt_click(View v) { Button bt = (Button) v; bt.setText(getString()); } private native String getString(); }
很多時候,使用shape能夠實現的效果,你用一張圖片也能夠實現,但問題是一張圖片無論你怎麼壓縮,它都不可能比一個xml文件小,因此,為了獲得一個高性能的手機App,我們在
屏幕切換指的是在同一個Activity內屏幕間的切換,ViewFlipper繼承了Framelayout類,ViewAnimator類的作用是為FrameLayout裡面
30、簡要解釋一下Activity、 Intent 、Intent Filter、Service、BroadcastReceiver。一個activity呈現了一個用戶可
1.先確認靠譜助手安裝檢測有沒有問題(以下幾項:顏色是否32位,opengl2.0是否支持,net framework 2.0 sp2是否安裝,C盤空間是否