android開發源碼分析--多個activity調用多個jni庫的方法

來源:互聯網
上載者:User

android開發源碼分析--多個activity調用多個jni庫的方法

有時候,我們在開發android項目時會遇到需要調用多個native c/jni庫檔案,以下是本人曾經實現過的方法,如果有知道其他方法,還望不吝指教。

例如,在android工程裡有兩個activity,分別是activity1和activity2,(可以進入工程目錄bin/classes路徑下查看有哪些),在這兩個activity裡都有調用jni,步驟如下:

1、 在activity1和activity2裡分別聲明native c

例如:activity1.java裡

private native String StringFromActivity1Jni();

static

{

System.loadLibrary("activity1");

}

Activity2.java裡

private native String StringFromActivity2Jni();

static

{

System.loadLibrary("activity2");

}

2、 產生 .h檔案

用命令:javah -classpath bin/classes/ -jni com.myprj.uitest.activity1和javah -classpath bin/classes/ -jnicom.myprj.uitest.activity2 產生activity1和activity2裡的標頭檔

需要特別注意的是紅色部分,一定要存在。可以進入工程目錄bin/classes路徑下查看。如果不能在jni下產生,那就mv吧。

3、 編寫Android.mk檔案:

LOCAL_PATH := $(call my-dir) //只能有一個這個路徑

include $(CLEAR_VARS)

LOCAL_MODULE := activity1

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

$(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity1.c

LOCAL_LDLIBS := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := activity2

LOCAL_C_INCLUDES += $(LOCAL_PATH) \

$(LOCAL_PATH)/android

LOCAL_SRC_FILES := activity2.c

LOCAL_LDLIBS := -L$(LOCAL_PATH) -lm -lz -llog

include $(BUILD_SHARED_LIBRARY)

需要注意的是:include $(BUILD_SHARED_LIBRARY)是產生動態庫,也可以產生靜態庫include $(PREBUILT_STATIC_LIBRARY)

4、 編譯:
ndk-build


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.