首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓系统上的Chilkat安装

安卓系统上的Chilkat安装
EN

Stack Overflow用户
提问于 2019-08-24 06:36:22
回答 2查看 492关注 0票数 1

我正在尝试在Android Studio (macOS - Android Studio3.5)下使用API16的现有应用程序上使用chilkat库。需要关于如何在Android Studio中正确导入chilkat库的建议。

我需要确定该库是否可以与应用程序一起使用(关于一些SFTP操作)。

按照Chilkat网站(https://www.chilkatsoft.com/chilkatAndroid.asp)上的说明,我能够编译包括库在内的应用程序。但是,为了编译应用程序,我必须在应用程序的gradle版本中添加Multidex支持:

..安卓{ compileSdkVersion 28 buildToolsVersion '27.0.3‘defaultConfig { minSdkVersion 16 targetSdkVersion 16 versionCode 72 versionName '1.6.6’multiDexEnabled true <-添加} dexOptions { javaMaxHeapSize "4g“} ..........依赖关系{ ........实现'com.android.support:multidex:1.0.3‘<-添加}

该应用程序的“项目结构”与说明中描述的不同,因此我最终将libs文件复制到项目的/app目录下的jniLibs目录中。源文件被复制到: /app/src/main/java/com/chilatsoft

在主应用程序中,我按照指令的建议包含了lib,并添加了加载器。

最后,我能够没有错误地编译应用程序,但是运行时应用程序崩溃,表明没有找到chilkat库。

nativeLibraryDirectories=/data/app-lib/com.xxxxxxxxxxx,:无法从加载器框架加载chilkat [ java.lang.Runtime.loadLibrary(Runtime.java:358) [压缩文件“/java.lang.UnsatisfiedLinkError/dalvik.system.PathClassLoader/com.symb.emdk.jar”,压缩文件“/DexPathList/java.lang.UnsatisfiedLinkError/com.xxxxxxxxxxxxxxxxxxxxxx.apk”,nativeLibraryDirectories=/data/app-lib/com.xxxxxxxxxxx,/dalvik.system.PathClassLoader/lib,/system/lib]]:在java.lang.Runtime.loadLibrary(Runtime.java:358)处findLibrary返回null

这让我觉得我导入的库不正确。要正确导入chilkat,有什么提示/步骤可以遵循吗?

在购买许可证之前,我想确保该库可以用于该项目。我无法更改API或从头开始,也无法更改当前应用的结构。

谢谢你的帮助!史蒂夫

EN

回答 2

Stack Overflow用户

发布于 2019-08-26 21:38:08

当你的应用像这样加载一个JNI .so共享库时:

代码语言:javascript
复制
static 
    {
    System.loadLibrary("chilkat");
    }

Java运行时加载器正在查找libchilkat.so的一些目录列表

错误消息似乎显示了它正在查找的目录列表:

代码语言:javascript
复制
alvik.system.PathClassLoader[DexPathList[[zip file "/system/framework
/com.symbol.emdk.jar", zip file "/data/app/com.xxxxxxxxxxx.apk"],
nativeLibraryDirectories=[/data/app-lib/com.xxxxxxxxxxx, 
/vendor/lib, /system/lib]]]: findLibrary returned null at
 java.lang.Runtime.loadLibrary(Runtime.java:358)

这些目录是:

/data/app-lib/com.xxxxxxxxxxx

/vendor/lib

/system/lib

而libchilkat.so不在任何一个文件里。libchilkat.so位于项目目录树中的一个目录中。一种解决方案是将libchilkat.so移动到其中一个目录。另一种解决方案是(以某种方式)将libchilkat.so所在的目录添加到搜索的目录列表中。

另一种可能的解决方案是显式加载.so。不是调用System.loadLibrary.而是调用System.loadLibrary(“libchilkat.so”),而是调用System.load来查找libchilkat.so(参见https://www.chilkatsoft.com/java-loadLibrary-Linux.asp)但这可能很困难,因为要加载的.so取决于运行时体系结构(armeabi-v7a、x86_64等)。

票数 0
EN

Stack Overflow用户

发布于 2021-03-23 06:14:43

对于初学者,您需要安装和配置android ndk

Android developers ndk documentation

然后,需要包含适当的.so文件

load .so files in android

最后,需要用以下命令加载本机代码

代码语言:javascript
复制
static 
    {
    System.loadLibrary("chilkat");
    }

完成此操作后,您可以继续学习教程

Official chilkat tutorial examples

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

https://stackoverflow.com/questions/57633709

复制
相关文章

相似问题

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