2

我只是尝试从本地 bitcoinj jar 切换到从 maven Central 提取的版本,并面临一个奇怪的问题。生成的 apk 的设备兼容性标记已损坏。

在此处输入图像描述 本节显示了我尝试的更改:

// compile "com.google:bitcoinj:0.11.1"
// the above looks like a really good idea, but unfortunately the apk resulting from this
// is broken in the way that it is marked as available only for x86_64 - which are 0 devices
// in google play at the moment - something strange gets pulled in there 

compile files('libs/bitcoinj-0.8.jar')

在调查这里有什么不想要的东西之前,我只是想在这里问一下是否有人面临同样的事情。奇怪的是,这似乎是一个 jar 依赖项,我不希望这样的事情被拉出来 - 不应该有本机代码..

4

2 回答 2

0

请参阅 scrypt github repo 中的自述文件:

“在 ARM 上运行的 Android 2.3 的预编译本机库位于 src/android/resources/lib/arm5/libscrypt.so。如果放置在 .apk 文件的 lib/armeabi 目录中,它将自动加载。”

在您的项目目录中(您可以在其中找到 res 子目录)创建一个 libs/armeabi 子目录并将 libscrypt.so 复制到其中。重建您的项目,生成的 apk 将 arm 作为本机平台之一。

亚历克斯

于 2014-06-03T14:56:25.020 回答
-1

我挖得更深了。Bitcoinj 引入了 libscrypt。来自bitcoinj pom:

<dependency>
<groupId>com.lambdaworks</groupId>
<artifactId>scrypt</artifactId>
<version>1.3.3</version>
</dependency>

并且 libscrypt 仅包含 x86_64 的本机代码:

$> unzip -l scrypt-1.4.0.jar | grep libsc
21708  2013-05-26 12:20   lib/x86_64/darwin/libscrypt.dylib
22140  2013-05-26 12:20   lib/x86_64/freebsd/libscrypt.so
21306  2013-05-26 12:20   lib/x86_64/linux/libscrypt.so

这似乎导致了问题

于 2014-04-02T16:09:05.500 回答