1. 程式人生 > >Android Studio JNI生成so庫

Android Studio JNI生成so庫

JNI生成so檔案

1.新建Android studio工程

這裡寫圖片描述

2.新建class:AppKey.java.主要為了儲存金鑰

程式碼塊

package com...adminapp.lib.utils.jni;

/**
 * Created by seven on 16/9/8.
 */

public class AppKey {

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

    public static native String WechatId();

    public static native
String WechatSecret(); public static native String QQId(); public static native String QQKey(); }

3.編譯JNI檔案,生成.h檔案

  • 1)選中整個Project,在選單欄選中Build->Make Project
  • 2)檢視TestJNI/app/build/intermediates/classes/debug/com…/AppKey.class
    這裡寫圖片描述
  • 3)在Android studio的Terminal中進入app/build/../debug/目錄下,然後執行:

    javah -jni com….adminapp.lib.utils.jni.AppKey

    這裡寫圖片描述

    生成.h檔案

    這裡寫圖片描述

4.編譯生成so檔案

  • 1)在src/main目錄下新建jni目錄和java目錄平級,用來儲存生成的.h檔案。將步驟3生成的com_…_adminapp_lib_utils_jni_AppKey.h檔案拷貝到新建的jni目錄。
  • 2)使用C/C++實現JNI,在jni資料夾下,建立com_…_adminapp_lib_utils_jni_AppKey.h對應的c檔案:AppKey.c

  • 3)建立mk檔案,並使用ndk-build命令生成.so動態連結庫檔案

    在jni目錄下建立Android.mk檔案如下:

    LOCAL_PATH :=$(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE :=AppKey
    LOCAL_SRC_FILES=AppKey.c
    include $(BUILD_SHARED_LIBRARY)

    其中LOCAL_PATH:是C/C++程式碼所在目錄,也就是我們的jni目錄。
    LOCAL_MODULE:是要編譯的庫的名稱。編譯器會自動在前面加上lib,在後面加上.so。
    LOCAL_SRC_FILES:是要編譯的C/C++檔案。

    在jni目錄下建立Application.mk檔案如下:

    APP_PROJECT_PATH := $(call my-dir)
    APP_MODULES := TestJNI
  • 4)使用ndk-build命令生成so庫

這裡寫圖片描述