在我的应用程序中,我需要使用Scrypt库,但是有一个问题:来自Maven Central的scrypt-1.4.0.jar
拒绝使用x86架构。
在这个帖子中找到了解决方案的提示:https://groups.google.com/forum/#!topic/bitcoinj/B0kOqUVIW24,具体来说:
是的,Maven Central上的scrypt jar包含本机代码(lib / * .so)。 他们真的应该把它放到一个单独的工件中) - :
无论如何,我正在使用
<excludeJarResources>
<excludeJarResource>.*\.jar$</excludeJarResource>
</excludeJarResources>
在我的android-maven-plugin配置中。你需要找到一些东西 类似于Gradle。
我使用Adroid Studio并且不知道如何在Gradle中实现相同的结果。我找到的唯一“解决方案”是将Scrypt库排除在外:
dependencies {
compile('org.bitcoinj:bitcoinj-core:0.12.2') {
exclude module: 'scrypt'
}
}
但当然只有在我需要在我的应用程序中使用Scrypt之后才有效。以下是来自同一线程的上述代码的注释:
Andreas的代码仅排除了JAR资源,即动态库, 这意味着scrypt库将回归纯Java 实施(慢得多)。
如何在Gradle中实现同样的目标?或者,有人建议使用NDK编译Scrypt本机库,但我不知道如何做到这一点。
答案 0 :(得分:1)
我建议你重新编译库,我在linux下编译我的库很简单,这里是如何(注意它需要很长时间才能编译)
设置环境:
启动SDK Manager的命令行:
sdk / tool / androis(sdk manager)
将Android添加到环境变量(必须在编译库之前完成):
export ANDROID_HOME = / media /.../ android-sdk-linux
export PATH = $ {PATH}:$ ANDROID_HOME / tools:$ ANDROID_HOME / platform-tools
export PATH =〜/ bin:/ media /.../ android-sdk-linux / tools /:/ media /.../ android-ndk-r10d /:$ PATH
编译库:
从项目根目录:运行
./misc/build-native.sh
Android Studio:
信息:将android studio bin添加到bin路径
运行:来自bin dir run studio
清理库以重新编译它们:
删除以下文件夹 “\ OBJ” “\ ovpnlibs” “\库”
重新编译库