在Gradle中为x86 android设备配置Scrypt

时间:2015-06-08 15:44:34

标签: android gradle scrypt

在我的应用程序中,我需要使用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本机库,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

解决方案:

我建议你重新编译库,我在linux下编译我的库很简单,这里是如何(注意它需要很长时间才能编译)

设置环境:

  1. 下载并解压缩Android NDK
  2. 将NDK添加到环境变量(见下文)
  3. 安装Android SDK Framework
  4. 将Android SDK添加到环境变量(见下文)
  5. 启动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

    清理库以重新编译它们:

    1. 删除以下文件夹 “\ OBJ” “\ ovpnlibs” “\库”

    2. 重新编译库