4

KeyGenParameterSpec を使用してキー仕様を定義しています。アプリケーションを実行すると、ログに次のエラーが表示されます。

原因: java.lang.ClassNotFoundException: パスにクラス "android.security.keystore.KeyGenParameterSpec$Builder" が見つかりませんでした: DexPathList[[zip ファイル "/data/app/com.rsa.mobile.transactionsigningsdk-1/base .apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]

以下は私のMainActivity.javaです:

 package com.rsa.mobile.transactionsigningsdk;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

import com.rsa.mobile.transactionsigningsdk.enrollment.DeviceEnrollmentHelper;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Log.i("Testing message", "App started");
    DeviceEnrollmentHelper deh =new DeviceEnrollmentHelper();
    deh.enroll();
    Log.i("Testing message", "Job Done");


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

以下は、MainActivity.java から呼び出されるコードです。

 public DeviceEnrollmentResponse enroll() {

    if(isEnrolled()) {
        return new DeviceEnrollmentResponse(null,StatusReasonCode.DEVICE_ALREADY_ENROLLED);
    }
    else{
        try {
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
                    "RSA", "AndroidKeyStore");

            /*KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(android.content.Context this)
                    .setAlias("trsdk")
                    .setSubject(new X500Principal("CN=Sample Name, O=Android Authority"))
                    .setSerialNumber(BigInteger.ONE)
                    .setKeySize(KEY_SIZE)
                    .build();*/
            keyPairGenerator.initialize(
                    new KeyGenParameterSpec.Builder(
                            "trsdk",
                            KeyProperties.PURPOSE_SIGN)
                            .setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
                            .setDigests(KeyProperties.DIGEST_SHA256,
                                    KeyProperties.DIGEST_SHA384,
                                    KeyProperties.DIGEST_SHA512)
                            .setUserAuthenticationRequired(true)
                            .build());
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            //Get the public key from the KeyPair
            PublicKey pk=keyPair.getPublic();
            //remove
            Log.i("Testing Message","Inside Enroll()");
            Log.i("Testing Message", String.valueOf(pk));

            //To Ask
            if (pk==null){
                return new DeviceEnrollmentResponse(null, StatusReasonCode.UNKNOWN_ERR);
            }
            else{
                return new DeviceEnrollmentResponse(pk, StatusReasonCode.DEVICE_SUCCESSFULLY_ENROLLED);
            }

            } catch (InvalidAlgorithmParameterException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (NoSuchProviderException e) {
                e.printStackTrace();
            }
        }
    //To Ask
    return null;
}

以下は私の AndroidMaifest.xml です:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

以下は、アプリの build.gradle です。

プラグインを適用: 'com.android.application'

Android { compileSdkVersion 23 buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.rsa.mobile.transactionsigningsdk"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
} }

依存関係{

compile ('com.thoughtworks.xstream:xstream:1.4.7'){
        exclude group: 'xmlpull'
}
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0' }

以下は、エラーのスタック トレースです。

11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: プロセス: com.rsa.mobile.transactionsigningsdk、PID: 27882 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.NoClassDefFoundError: 以下の解決に失敗しました: Landroid/security/keystore/KeyGenParameterSpec$Builder; 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.rsa.mobile.transactionsigningsdk.enrollment.DeviceEnrollmentHelper.enroll(DeviceEnrollmentHelper.java:82) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.rsa.mobile.transactionsigningsdk.MainActivity.onCreate (MainActivity.java:27) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.Activity.performCreate(Activity.java:6088) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 11-24 11:07: 52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2416) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.access$900(ActivityThread.java:154) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1322) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.os.Handler.dispatchMessage(Handler.java:102) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.os.Looper.loop(Looper.java:135) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.main(ActivityThread.java: 5290) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.reflect.Method.invoke(ネイティブ メソッド) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.reflect.Method.invoke(Method.java:372) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: 原因: java.lang.ClassNotFoundException: パスにクラス "android.security.keystore.KeyGenParameterSpec$Builder" が見つかりませんでした: DexPathList[[zip ファイル "/data/app/com.rsa.mobile.transactionsigningsdk -1/base.apk"]、nativeLibraryDirectories=[/vendor/lib64、/system/lib64]] 11-24 11:07: 52.485 27882-27882/? E/Android ランタイム:
dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.ClassLoader.loadClass(ClassLoader.java:511) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.ClassLoader.loadClass(ClassLoader.java:469) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.rsa.mobile.transactionsigningsdk.enrollment.DeviceEnrollmentHelper.enroll(DeviceEnrollmentHelper.java:82) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.rsa.mobile.transactionsigningsdk.MainActivity.onCreate (MainActivity.java:27) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.Activity.performCreate(Activity.java:6088) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.Instrumentation. callActivityOnCreate(Instrumentation.java:1106) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2416) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread.access$900(ActivityThread.java:154) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1322) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.os.Handler.dispatchMessage(Handler.java:102) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: android.os.Looper.loop(Looper.java:135) 11-24 11:07:52.485 27882-27882/? E/Android ランタイム: Android.app.ActivityThread.main(ActivityThread.java:5290) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.reflect.Method.invoke(ネイティブ メソッド) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.reflect.Method.invoke(Method.java:372) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: 抑制: java.lang.ClassNotFoundException: android.security.keystore.KeyGenParameterSpec$Builder 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.Class.classForName(ネイティブ メソッド) 11-24 11:07:52 で。485 27882-27882/? E/AndroidRuntime: java.lang.BootClassLoader.findClass(ClassLoader.java:781) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: java.lang.ClassLoader.loadClass(ClassLoader.java:504) 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: ... 16 より多くの 11-24 11:07:52.485 27882-27882/? E/AndroidRuntime: 原因: java.lang.NoClassDefFoundError: Class not found using the boot class loader; 利用可能なスタックがありません 11-24 11:07:52.485 32736-32736/? D/AsyncTaskServiceImpl: タスクを送信: k 11-24 11:07:52.487 27882-27882/? D/AppTracker: アプリ イベント: クラッシュ 11-24 11:07:52.487 1092-22412/? W/ActivityManager: getRunningAppProcesses: 発信者 10156 は REAL_GET_TASKS を保持していません。出力制限 11-24 11:07:52.489 1092-10061/? W/ActivityManager: getRunningAppProcesses: 発信者 10156 は REAL_GET_TASKS を保持していません。出力制限 11-24 11:07:52.490 32736-27837/? D/k: パッケージの処理: com.rsa.mobile.transactionsigningsdk 11-24 11:07:52.490 32736-32736/? D/ChimeraCfgMgr: APK com.google.android.gms.vision からモジュール com.google.android.gms.vision をロードしています com.google.android.gms 11-24 11:07:52.492 1092-4065/? D/WifiService: クライアント接続が次の理由で失われました: 4 11-24 11:07:52.503 1092-4736/? W/ActivityManager: 強制終了アクティビティ 1 com.rsa.mobile.transactionsigningsdk/.MainActivity 11-24 11:07:52.505 13111-13111/? E/NetworkScheduler.SchedulerReceiver: 無効なパラメーター アプリ 11-24 11:07:52.505 13111-13111/? E/NetworkScheduler.SchedulerReceiver: 無効なパッケージ名: 多分あなたは' エクストラに PendingIntent を含めませんか? 11-24 11:07:52.520 1092-27935/? D/DropBoxManagerService: ファイル :: /data/system/dropbox/data_app_crash@1448343472518.txt 11-24 11:07:52.535 1092-1169/? W/ActivityManager: アプリ エラー ダイアログを閉じる: com.rsa.mobile.transactionsigningsdk 11-24 11:07:52.537 27882-27882/? I/プロセス: シグナルを送信しています。PID: 27882 SIG: 9 11-24 11:07:52.549 32736-27837/? D/GassUtils: パッケージ com.rsa.mobile.transactionsigningsdk:1 のアプリ情報が見つかりました。ハッシュ: b6b6c7a4a5de3ea7df9c51284188b1040033e02a491ec95fee9371f7817bc00c 11-24 11:07:52.549 32736-27837/? D/k: データベースでパッケージ com.rsa.mobile.transactionsigningsdk の情報が見つかりました。11-24 11:07:52.562 1092-10061/? I/ActivityManager: ブロードキャスト com.yatra.base/com.moe.pushlibrary.AppUpdateReceiver 11-24 11:07:52 の proc 27936:com.yatra.base/u0a143 を開始します。562 367-367/? E/lowmemorykiller: /proc/27882/oom_score_adj の書き込みエラー。errno=22 11-24 11:07:52.581 1092-22411/? I/ActivityManager: プロセス com.rsa.mobile.transactionsigningsdk (pid 27882) が停止しました 11-24 11:07:52.582 1092-1163/? V/ActivityManager: スレッド 16 11-24 11:07:52.587 27936-27936/? で PID 27882 の killProcessGroupAsync に 0 ミリ秒かかりました。W/ResourcesManager: アセット パス '/system/framework/com.google.android.maps.jar' が存在しないか、リソースが含まれていません。11-24 11:07:52.601 27936-27936/? I/MultiDex: バージョン 2.1.0 の VM は multidex をサポートしています 11-24 11:07:52.601 27936-27936/? I/MultiDex: インストール 11-24 11:07:52.601 27936-27936/? I/MultiDex: VM は multidex をサポートしており、MultiDex サポート ライブラリは無効になっています。11-24 11:07:52.601 27936-27936/? I/MultiDex: インストール 11-24 11:07:52.601 27936-27936/? 私/マルチデックス: VM は multidex をサポートしていますが、MultiDex サポート ライブラリは無効になっています。11-24 11:07:52.614 27936-27936/? D/MoEngage_v510: MoEController:Context が null であり、現在サービスをバインドできません。11-24 11:07:52.616 1092-1181/? W/WindowManager: ウィンドウ 11-24 11:07:52.616 1092-1181/? の検索に失敗しました。W/WindowManager: java.lang.IllegalArgumentException: 要求されたウィンドウ android.view.ViewRootImpl$W@35e88e7 が存在しません 11-24 11:07:52.616 1092-1181/? W/WindowManager: com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8708) 11-24 11:07:52.616 1092-1181/? W/WindowManager: com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8699) 11-24 11:07:52.616 1092-1181/? W/WindowManager: com.android.server.wm.WindowManagerService.removeWindow(WindowManagerService.java: 2620) 11-24 11:07:52.616 1092-1181/? W/WindowManager: com.android.server.wm.Session.remove(Session.java:187) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3015) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.view.ViewRootImpl.doDie(ViewRootImpl.java:5502) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3321) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.os.Handler.dispatchMessage(Handler.java:102) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.os.Looper.loop(Looper.java:135) 11-24 11:07:52.616 1092-1181/? W/WindowManager: android.os.HandlerThread.run(HandlerThread.java:61) 11-24 11:07:52 で。616 1092-1181/? W/WindowManager: com.android.server.ServiceThread.run(ServiceThread.java:46) 11-24 11:07:52.618 27936-27936/? I/MoEngage_v510: MoEUtils: SDK が初期化されました。MoEngage SDK バージョン: 510 11-24 11:07:52.618 1092-22411/? W/InputMethodManagerService: com.android.internal.view.IInputMethodClient$Stub$Proxy@34f79c48 属性 = null、トークン = android.os.BinderProxy@132d42ec のフォーカス ゲインを無視して、ウィンドウは既にフォーカスされています

誰か助けてください:関連する質問で提案されているように、プロジェクトをクリーンアップして再インポートしてみました。前もって感謝します!

4

1 に答える 1

2

これは、API の 23 (Android 6.0 以降) を使用していないデバイスを使用しているためです。

于 2015-12-30T11:29:44.663 に答える