導航:首頁 > 操作系統 > androidstudio調用so

androidstudio調用so

發布時間:2023-07-19 11:59:05

『壹』 在MACOX上的androidSTUDIO如何編譯OPENSSL原生的C庫成動態的.SO庫

目前暫不支持開發工具編譯C、c++代碼生成so文件,應該後續版本會有的。
.so 為共享庫,是shared object,用於動態連接的,和dll差不多,可以這樣調用so文件:
調用 System.out.println(System.getProperty("java.library.path"));
得到/usr/java/jdk1.5.0_13/jre/lib/i386,將SO文件放在該目錄下
運行java程序,輸出了由C語言函數計算出的結果

『貳』 在 Android Studio 中使用 ollvm 版本的 clang 編譯 so

​ 如果簡單的使用 ollvm 版本的 clang.exe 等可執行文件替換掉原版 ndk toolchain 中的 exe,那麼將會報一些頭文件查找不到的錯誤,網上說的原因似乎是不同版本的 clang 將會使用的頭文件有差異,然而如果在控制台中直接使用 ollvm 版本 clang 去手動執行編譯命令,是可以正常編譯成功得到 .o 文件的,以下是我避免該坑的方法:

​ 打開 "YOUT_PROJECT_PATH\app.externalNativeBuild\cmake\debug\TARGET_ABI\rules.ninja",找到 "rule C_COMPILER__TARGET" 這一行(TARGET 指你在 CMakeLists.txt 中使用 add_library 指定的庫名),然後你會在下面幾行找到編譯使用的 clang 路徑,把它替換為你 ollvm 版本 clang 的路徑,然後正常編譯即可得到你想要的 so。

『叄』 用android studio引入第三方so庫,怎麼調不了方法

之前一直沒有做過第三方的推送消息,這次公司要求採用國內極光第三方推送服務,由於項目還在原型圖構思中,因而還可以花點時間看看這方面的東西。

看了下相關的DEMO,挺簡單的,加點許可權,把相關的廣播以及服務注冊一下就好了,然後在application中初始化一下,就解決了。可偏偏這么簡單的幾步,確花了我一點時間去調通。

過濾了相關的log如下
06-21 15:00:53.080 3006-3006/com.soo.jchatdemo E/JPush: [JPushInterface] System.loadLibrary::jpush215java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.soo.jchatdemo-2/base.apk"],nativeLibraryDirectories=[/system/lib, /vendor/lib, system/vendor/lib, system/vendor/lib/egl, system/lib/hw]]] couldn't find "libjpush215.so"

06-21 15:00:53.100 3006-3006/com.soo.jchatdemo W/System.err: at cn.jpush.android.api.JPushInterface.init(Unknown Source)

06-21 15:00:53.100 3006-3006/com.soo.jchatdemo E/JPush: [JPushGlobal] Get sdk version fail![獲取sdk版本失敗!]

06-21 15:00:53.100 3006-3006/com.soo.jchatdemo W/System.err: at cn.jpush.android.api.JPushInterface.init(Unknown Source)

06-21 15:00:53.100 3006-3006/com.soo.jchatdemo E/JPush: [JPushGlobal] JPush .so file do not match JPush .jar file in the project, Failed to init JPush


明顯告訴我們,目前缺少了libjpush215.so文件。奇怪的是這so庫已經在我們項目的libs中,之前在eclipse中這樣完全能跑起來的。
問題是Android
Studio目前在打包的時候並沒有在libs中復制SO庫到項目中。因此我們需要在build.gradle中告訴AS執行復制so庫文件。
android {
...
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['libs']
}
}
}

然後重新Sync Now一下,整個世界都明亮了

『肆』 androidstudio怎麼將寫好的so文件工程打包成jar包

Android Studio的so庫導入和Eclipse的方式有些不同。在Android Studio中,要在工程的src/main下面新建一個jniLibs文件夾,然後將所用到的第三方so庫復制進來,然後找到Project下的build.gradle文件,在其中添加以下幾行代碼:

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}

然後重新Gradle一下代碼,第三方so庫就加了進來。

參考http://www.cnblogs.com/devpan/p/5536238.html

『伍』 AndroidStudio如何配置NDK/JNIAndroidStudio怎麼調用so動態鏈接庫

AndroidStudio怎麼調用so動態鏈接庫?在我們日常開發中,經常會用到一些復雜的加密演算法以保證通信的安全。通常這些演算法會用C或C++實現後打包成.so動態鏈接庫並向Java層開發介面方便調用。


以AndroidStudio為例

1 . 首先去下載NDK包,下載路徑如下可根據自己系統定點下載

https://developer.android.google.cn/ndk/downloads/index.html

static{
System.loadLibrary("jnitext");
}
publicnativeStringget_1111CLang_1String();

『陸』 android studio 怎麼打開so文件

先在Android studio導入一個項目,然後進入到項目中,依次進入到app>>src>>main下。

在main的文件下進行創建一個jnilibs,然後選中main的文件,進行右鍵,彈出框中點擊「new」,移動下一級菜單中選擇「directory」。

對創建的文件夾進行昵稱,在昵稱中進行輸入「jnilibs」,然後點擊「ok」。

這樣在main的文件中創建一個為jnilibs的文件夾。

然後在jinlibs中文件進行添加so的文件,進入到so文件存放的文件中,直接把so的文件拖動到jinlibs的文件中。

拖動完成之後,會提示一個確認款提示信息,直接點擊「ok」即可。

在non-project file access中第一個希望編輯文件,第二個為咱想在當前會話中編輯任何非項目文件,根據的自己需要進行選擇,可以默認即可,點擊ok。

這樣就把so文件添加到jnilibs的文件中,這樣的話程序的代碼就可以進行調用其中方法。

閱讀全文

與androidstudio調用so相關的資料

熱點內容
在回收站中可以恢復幾個文件夾 瀏覽:916
phpget轉義 瀏覽:322
我的世界寶可夢伺服器叫什麼名字 瀏覽:748
新聞編譯難嗎 瀏覽:582
ia架構伺服器是什麼意思 瀏覽:220
linux查看區域網 瀏覽:77
金蝶啟動命令 瀏覽:480
安卓如何執行shell命令 瀏覽:947
linux路由控制 瀏覽:434
碧藍航線壓縮包解壓密碼 瀏覽:439
抗性提升命令方塊指令 瀏覽:769
程序員那麼可愛第30集免費看 瀏覽:637
如何下載老友麻將app 瀏覽:445
java路徑參數 瀏覽:592
php命名空間使用 瀏覽:298
app的競爭力如何寫 瀏覽:587
linux刪除swp 瀏覽:590
pdfxchange40 瀏覽:77
車牌號碼是哪個app 瀏覽:50
文件夾如何添加圓點 瀏覽:731