編輯:關於Android編程
很早使用eclipse+ndk研究過jni開發,當時覺得配置、開發起來很麻煩,現在使用Android Studio開發jni,相對覺得比較容易。
先說明一下開發環境
Mac OS X 10.11
Android Studio 2.0
現在開始一步一步地進行jni開發。
首先,使用AS創建一個project,命名為JniDemo
如果沒有安裝NDK,安裝NDK。 已安裝,可略過。
打開項目設置對話框,如果沒有安裝NDK, 在Android NDK Location位置就會有Download按鈕,可下載安裝NDK。
新建一個java類EnUtils, 增加兩個native方法。如圖。
Rebuild Project之後,build/intermediates/classes/debug目錄下就會生成 EnUtils.class文件
進入到debug目錄下,執行javah命令,就會生成一個頭文件com_martin_jnidemo_EnUtils.h
命令:javah -jni com.martin.jnidemo.EnUtils
src/main目錄下,創建jni目錄,把之前生成的頭文件復制到jni目錄下。
在jni目錄下,創建c源文件,文件名可隨意。
函數實現,如圖。
這一步之後就可以Rebuild Project了,但會出錯,依據提示修改gradle即可。
配置gradle
1. 在gradle.properties中增加一行android.useDeprecatedNdk=true
2. 在app的build.gradle的defaultConfig中增加
ndk {
moduleName "EnUtilsName" //so名字
abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64"
}
到此為止,再Rebuild Project,就生成了so文件。如圖。
接下來就是如何使用調用so庫文件了。
在EnUtils類中添加加載so庫的代碼,名稱要和build.gradle中定義的ndkmoduleName一致。
static { System.loadLibrary("EnUtilsName"); }
調用沒有什麼特別的,如圖。
運行效果
以上是ndk jni開發的步驟。
下面將要介紹,編譯生成的so文件如何單獨使用。
1. 刪除jni目錄,以及目錄下的.h .c文件
2. build.gradle中ndk配置也刪除掉。
在src/main下創建jniLibs目錄,再將ndk/debug/lib下的4個so目錄復制到jniLibs目錄下。
再重新Clean Project, Rebuild Project即可。
最近在項目開發中遇到一個關於手機輸入鍵盤的坑,特來記錄下。應用場景:項目中有一個界面是用viewpaper加三個fragment寫的,其中viewpaper被我屏蔽了左右
一、基本知識點1、Intent intent = new Intent();//打開浏覽器的intent.setAction(Intent.ACTION_VIEW);in
由於第一次寫博客,裡面難免有些錯誤與不足,希望大家可以幫忙多多指點。下面我將從三個方面給大家介紹一下android開發吧,也是對我前一段時間學習的總結吧。第一,Andro
1.前言在Android安全的研究工作中,我們時常要對Android進行改進並對其進行源碼編譯,由於目前幾乎所有的手機廠商均對其底層驅動實行封閉政策,導致我們在完成And