我只是尝试从本地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依赖,我不希望这样的东西被拉 - 应该没有本机代码..
答案 0 :(得分:1)
请参阅scrypt github repo中的README:
“在ARM上运行的Android 2.3的预编译本机库位于src / android / resources / lib / arm5 / libscrypt.so。如果放在.apk文件的lib / armeabi目录中,它将自动加载。”< / p>
在项目目录中(找到res子目录)创建一个libs / armeabi子目录并将libscrypt.so复制到它。重建你的项目,结果apk将arm作为本机平台之一。
亚历
答案 1 :(得分:0)
我挖得更深了一点。 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
这似乎导致了问题