首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >本机库(.so文件)不会添加到安卓项目中

本机库(.so文件)不会添加到安卓项目中
EN

Stack Overflow用户
提问于 2013-08-11 23:10:48
回答 3查看 9.9K关注 0票数 9

我正在尝试使用sqlitecipher库,这需要使用本地库。他们的教程很简单,但对我不起作用。每次我得到下面的错误:

代码语言:javascript
复制
FATAL EXCEPTION: main
        java.lang.UnsatisfiedLinkError: Couldn't load stlport_shared from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.example.test-2.apk,libraryPath=/data/app-lib/org.example.test-2]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:365)
        at java.lang.System.loadLibrary(System.java:535)
        at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:141)
        at net.sqlcipher.database.SQLiteDatabase.loadLibs(SQLiteDatabase.java:136)

这意味着在编译过程中没有附加.so文件。

这3个文件都存储在/libs/armeabi/目录中。

我假设问题是我使用maven来管理依赖项(无论如何,构建都是使用Android Studio执行的)。下一次尝试-将这些库包含到maven依赖项中。根据documentation的说法,这很容易。我在公共存储库中找不到它们,所以我使用带标记的<scope>system</scope>。它们是可见的,但它不起作用。后来发现this链接,据说作用域“系统”不能工作,尝试使用以下命令将这些库添加到本地存储库中

代码语言:javascript
复制
mvn install:install-file -DgroupId=net.sqlitecipher -DartifactId=stlport_shared -Dversion=1.0 -Dfile=libstlport_shared.so -Dpackaging=so -DgeneratePom=true

最后--它不起作用了。

我还看到了这个topic,可能这是一个解决方案,但我目前没有使用gradle。有没有一种方法可以在不从maven迁移到gradle的情况下将.so文件包含到apk中?

据我所知,Android Studio在内部使用gradle来构建apks,所以在maven开始支持本地库之前,我在maven上的所有努力都是徒劳的,对吗?我也尝试过使用Intellij IDEA Cardea (13.0)构建这个项目,不幸的是没有任何成功。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-22 20:48:04

一旦本地库位于/ libs /armeabi/中,您所要做的就是正确配置android插件。如下所示:

代码语言:javascript
复制
<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <configuration>
         <nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>
         ...
    </configuration>
    <extensions>true</extensions>
</plugin>
票数 10
EN

Stack Overflow用户

发布于 2013-08-22 18:30:19

对问题1的回答:是的。我以前没有遇到过这个特定的问题,但通常你不需要切换到gradle。可以使用ant任务将SO文件添加到APK。而且由于maven可以运行Ant任务,所以这是可能的。

您找到的here只不过是一个将所有SO文件放入一个nativeLibsToJar文件中,然后使用扩展JAR而不是ZIP的任务。您可以使用Ant task Zip (或许还可以使用rename)轻松地完成此任务。

回答问题2:否。因为第一个答案。不需要"maven来支持本机库“。只需使用Ant作为构建系统。

票数 1
EN

Stack Overflow用户

发布于 2015-11-09 17:23:57

你必须创建jni文件夹的.so文件包含在安卓项目使用安卓工作室。

我有附上的图像,请遵循这些步骤。

创建jnilib文件夹后,您可以将所有.so文件放入此文件夹中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18173341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档