簡體   English   中英

如何在Android Studio 1.3.2中包括預構建的.so庫

[英]How to include prebuilt .so libs in Android Studio 1.3.2

我在將已經使用ndk-build的本機庫集成到Android Studio項目時遇到困難。 問題是我陷入了Gradle語法是全新的過渡時期,但是文檔和在線幫助仍引用舊的語法。

我的庫位於項目的以下位置: app/libs/(armeabi and others)/libsample.so ,用於同一庫的不同體系結構的總共7個變體。 我還在app/src/main/jni/headers有此庫的頭文件,還有在app/src/main/jni/wrapper.c調用此庫中定義的函數的C包裝器文件。 包裝器文件具有#include "headers/sample.h"

主要問題是我不知道如何設置Gradle構建以使用預構建的共享庫。 我有一個有效的Android.mk文件,該文件可以成功編譯我的包裝器以使用共享庫,但是我不能在Android Studio中使用它,因為Gradle會生成它自己的makefile並使用它。 有人知道如何從這里繼續嗎?

您應該能夠簡單地將預構建的.so文件拖放到(項目模塊)/ src / main / jniLibs /(目標abi)中,並且它們將包含在Android Studio生成的最終apk中。

一個警告 :我不是100%肯定的,但是看起來Android的安裝程序可以選擇從abi文件夾中拋出一些庫,它確定它比當前apk中其他abi文件夾(例如armeabi和armeabi-v7a可能都兼容,但是armeabi-v7a可能更適合)(如果僅在較差適應性文件夾中存在上述庫)。 如果您沒有本機庫的源代碼,這將變得很重要。 您可以通過在模塊的build.gradle中指定一個與您的本機庫編譯的abi匹配的單個abi來解決此問題,或者通過設置jni.srcDirs來禁用Android Studio的ndk生成過程= []在android.sourceSets.main中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM