Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> AndroidStudio如何快速制作.so

AndroidStudio如何快速制作.so

編輯:關於Android編程

之前寫過一篇Eclipse制作.so的文章,使用的是GNUstep模擬Linux環境,過程現在看來是想相當麻煩,後來發現一個簡單的方法就是通過項目右鍵添加Native Supprot...可以快速創建.so而不使用命令行,

\

 

由於AS越來越被大家使用,所以Eclipse的制作過程就不再寫了,這篇主要講的是如何用AS快速制作一個簡單的.so文件!

如果之前對制作.so一點了解也沒有的話,在看這一篇之前可以看下文章開頭提到的文章,會對這篇文章的理解上有所幫助,因為本篇文章不打算講解的太過詳細!

 

步驟1:

創建一個新的AS項目(模板選擇EmptyActivity即可)jnitest,包名:com.byl.jnitest:

\

 

步驟2:

添加NDK支持:

按Ctrl+Alt+Shift+S,出現如圖:

\

ok,完成後,打開項目根目錄下的local.properties文件:

\

ndk的路徑會自動添加進來,表示操作成功!

 

步驟3:

打開根目錄下gradle.properties文件,添加代碼:

 

android.useDeprecatedNdk=true
\

 

步驟4:

項目>app>src>main文件夾下,新建jni文件夾,並放入三個文件.h、.c、.c:

\

注意:

.h文件命名的命名方式,包名+調用.so的Activity名且"."需要更換成下滑線"_";

jnitest.c的命名可以隨便定義;

util.c是一個空的.c文件,作用就是在ndk編譯時避免一個錯誤:

 

make.exe: *** No rule to make target

com_byl_jnitest_MainActivity.h:

 

 

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class com_byl_jnitest_MainActivity */

#ifndef _Included_com_byl_jnitest_MainActivity
#define _Included_com_byl_jnitest_MainActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_byl_jnitest_MainActivity
 * Method:    getSec
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_byl_jnitest_MainActivity_getSec
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

jnitest.c:

 

 

#include  
#include  

jstring
Java_com_byl_jnitest_MainActivity_getSec
   (JNIEnv* env,jobject thiz){
	return (*env)->NewStringUTF(env,"調用jni成功");
}


 

步驟5:

在MainActivity中調用.so:

 

    public static native String getSec();//.so中的方法名

    static{
        System.loadLibrary("jnitest");
    }

注意:.so最終的名稱默認為lib+項目名如:libjnitest.so。

 

\

 

步驟6:

最後一步,打開app目錄下build.gradle文件,修改gradle配置:

 

 defaultConfig {
        applicationId "com.byl.jnitest"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        ndk {
            moduleName "jnitest"
            ldLibs "log", "z", "m"
            abiFilters "armeabi"
        }
    }

\

 

 

以上步驟全部完成後,直接點擊run>>:

\

運行必然要報錯的,因為之前.so文件並不存在,經此一調,ndk便自動為我們生成了想要的東西:

\

將.so文件復制出來,然後在main文件夾下建立jniLibs/armeabi,並將.so放入:

\

再次運行>>:

\

此例只是簡單的輸出一個字符串,一般的項目放入一個不想外露的密鑰之類的還是非常有用的!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved