JNI學習筆記之AS+ndk+gradle自動編譯出so並整合流程
上一篇的方法完全是我們手動編譯並拷來拷去整合so庫的,這樣會很麻煩,但對初學者來說就應該這樣一步一步前進,混合程式設計本來就是個很複雜的流程,我覺得這樣把每個流程分開來學習是最好的。接下來,將介紹強大的AndroidStudio如何在上一個篇的基礎上利用gradle實現自動編譯。其實就是加幾個gradle指令碼。
1.建立工程
2.編寫java程式碼
主要是宣告native方法
比如:
public class JNIUtils {
public static native String getStringFromNative();
}
3.新增配置
在src/main目錄下建立一個存放C/C++程式碼的資料夾,比如jni
然後再app的gradle檔案裡的android塊加個指令碼
sourceSets {
main{
jni.srcDirs=["src/main/jni"]
}
}
這個想gradle構建系統表明我的工程的c/c++原始碼在該資料夾裡
在src/main/jni建立Android.mk檔案
然後配置對應的指令碼
externalNativeBuild{
ndkBuild{
path "src/main/jni/Android.mk"
}
}
在android塊的defaultConfig塊新增
ndk{
abiFilters `armeabi-v7a`
}
這個是設定只生成armeabi-v7a 平臺的so庫
4.gradle同步一下,完善C和Android.mk程式碼
在jni資料夾新增一個hello.c
#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_newtrekwang_ndkpractice_JNIUtils_getStringFromNative(JNIEnv *env, jclass type) {
char* st="hello From C";
return (*env)->NewStringUTF(env, st);
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
5.編譯工程,執行
相關文章
- JNI學習筆記之ndk-build手動編譯並整合流程筆記UI編譯
- 在Eclipse 下整合ndk 自動編譯生成so檔案Eclipse編譯
- Java JNI 學習筆記Java筆記
- 【編譯openjdk學習筆記】編譯JDK筆記
- redis 學習筆記(1)-編譯、啟動、停止Redis筆記編譯
- 深度學習讀書筆記之AE(自動編碼AutoEncoder)深度學習筆記
- jni編譯出錯!急!!編譯
- Google Protocol buffer 學習筆記.下篇-動態編譯GoProtocol筆記編譯
- (轉)redis 學習筆記(1)-編譯、啟動、停止Redis筆記編譯
- ZYNQ學習筆記(一): uboot 編譯筆記boot編譯
- Eclipse自動編譯NDK/JNI的三種方法Eclipse編譯
- AC自動機學習筆記筆記
- AC 自動機學習筆記筆記
- 字尾自動機學習筆記筆記
- 彙編學習筆記之轉移指令筆記
- JVM學習筆記——自動記憶體管理JVM筆記記憶體
- 編譯、連結學習筆記(一)簡述編譯連結過程編譯筆記
- 彙編學習筆記筆記
- webpack 學習筆記:實戰之 babel 編碼Web筆記Babel
- 機器學習框架ML.NET學習筆記【9】自動學習機器學習框架筆記
- CAS學習筆記五:SpringBoot自動/手動配置方式整合CAS單點登出筆記Spring Boot
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- GCC/G++學習筆記 - 1 - 執行預編譯GC筆記編譯
- 機器學習整合學習—Apple的學習筆記機器學習APP筆記
- SAP學習筆記--整合與核算筆記
- 自動化運維工具Saltstack學習筆記運維筆記
- java反射之動態代理學習筆記Java反射筆記
- SSM學習筆記3——整合 SpringMVC、整合SSMSSM筆記SpringMVC
- go 學習筆記之走進Goland編輯器筆記GoLand
- Activiti 學習(三)—— Activiti 流程啟動並完成
- 學習筆記分享之彙編---2.彙編指令/語法筆記
- NDK學習筆記-NDK開發流程筆記
- Activiti 學習筆記五:流程變數筆記變數
- Linux下編譯生成SO並進行呼叫執行Linux編譯
- SpingBoot_學習筆記整合boot筆記
- Mybatis-plus學習筆記(十一)自動填充功能MyBatis筆記
- Android筆記之:App自動化之使用Ant編譯專案多渠道打包的使用詳解Android筆記APP編譯
- JNI學習