android 上的 Bitcoinj 库在安装 APK 时挂起

Bitcoinj library on android hung on installing APK

我正在尝试获得一个基本的 运行ning 应用程序,它将使用 bitcoinj 库来创建钱包和同步。非常基本。我在我的桌面应用程序中使用了 bitcoinj 库,没有任何问题。当我尝试为 android 制作一个时,它在我的 phone.

上尝试 运行 时挂在“...正在安装 APK”

这是我的代码。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
import org.bitcoinj.core.Context;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.core.listeners.DownloadProgressTracker;
import org.bitcoinj.kits.WalletAppKit;
import org.bitcoinj.params.TestNet3Params;

import java.io.File;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    public static NetworkParameters BTCparams = TestNet3Params.get();
    public static WalletAppKit BTCkit = new WalletAppKit(BTCparams,new File("."),"BTC-Test");
    private ProgressBar BTCProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BTCProgress = findViewById(R.id.BTCProgress);
        Context.propagate(new Context(BTCparams));
        DownloadProgressTracker BTCListener = new DownloadProgressTracker() {
            @Override
            public void progress(double pct, int blocksSoFar, Date date) {
                System.out.println("Syncing..."+pct+"%");
                BTCProgress.setProgress((int) pct);
            }
            @Override
            public void doneDownload() {
                System.out.println("Sync Done.");
                BTCProgress.setProgress(100);
            }
        };
        BTCkit.setDownloadListener(BTCListener).setBlockingStartup(false).startAsync().awaitRunning();
    }
}

这是我的应用程序文件夹中的 build.gradle。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.testapp.testapp"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0'
    implementation 'org.bitcoinj:bitcoinj-core:0.14.7'
    implementation 'org.slf4j:slf4j-api:1.7.12'
    implementation 'org.slf4j:slf4j-simple:1.7.12'
}

我最终得到了这个对话框。

Dialog

当我单击“确定”时,出现此错误。

Error

它把你带到这里...

Binder.java

我很困惑,无法弄清楚为什么这不起作用。我怀疑一旦我解决了这个问题,我的开发就会变得轻而易举。请提供详细信息,因为我仍在学习 android 开发。

改为:

implementation "org.slf4j:slf4j-simple:1.7.25"
api "org.slf4j:slf4j-api:1.7.25"

这看起来也很奇怪:

Context.propagate(new Context(BTCparams));

因为连NULL都没有,但没有任何价值