問題タブ [dexclassloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1010 参照

java - Android クラス ローダー エラー

jar ファイルで ScreenX クラスをインスタンス化し、このサイトのすべてのソリューションを試したいのですが、実行できません。

私は2つのファイルを持っています;

コードを垂らしてみました。

これは私の plugin.jar の ScreenX クラスのコードです。

package com.example.plugins;

実用的なサンプルはありますか? 助けてください...

0 投票する
1 に答える
587 参照

android - dex ファイルからメソッドを実行するときにリソースを読み取れない

コードとリソース ( ) を含む jar ファイルがありましたResourceBundle
そのjarを使用してAndroidスタジオで簡単なプロジェクトを作成し、コンパイルし、抽出して2番目のプロジェクトに.apkコピーしました。classes.dexまた、抽出した .apk から 2 番目のプロジェクトにリソースをコピーしました。

2 番目のプロジェクトから、.dex ファイルからクラスをロードしました。そのクラスから (dex ファイルから) リソースを読み取るメソッドを実行すると、リソースが見つからない場合、例外がスローされます。

失敗する行:

私が実行した場合:

2番目のプロジェクトから(dex内からではなく)、問題なく動作します-リソースを取得します。

アイデアはありますか?

ありがとう

0 投票する
0 に答える
105 参照

java - Androidでプロセスを共有するときのClassCastException

同じプロセスとユーザー ID を共有する 2 つの Android アプリケーション (アプリケーション A とアプリケーション B) を作成しました。両方のアプリケーションでジェネリック アクティビティを定義しました。GenericActivity の名前空間とクラス名は両方のアプリケーションで同じですが、内容は異なります。

したがって、アプリケーションAは

そしてアプリケーションBは

最初にアプリケーション A を起動し、次にアプリケーション A からアプリケーション B を起動します。両方のアプリケーションのクラスローダーが異なるため、両方のアプリケーションを起動すると、GenericActivity クラスの 2 つのコピーが各クラスローダーに関連付けられていることがわかります。次に、各アプリケーションに関連付けられます。ここまでは順調ですね。

ここで、両方のアプリをバックグラウンドで実行し、アプリケーション A を強制終了します。次に、アプリケーション A を再起動します。アプリケーション AI には、このようなコードを持つフラグメントがあります。

ここに問題があります。ここでクラスキャスト例外が発生します。デバッグ後、アプリケーション B の GenericActivity にキャストしようとしていることがわかりました。別のクラス ローダーによってロードされた別のクラスであるため、クラス キャスト例外が発生します。私の理解では、アプリケーション A を強制終了して再起動すると、クラスローダーを介して GenericActivity のコピーが再度読み込まれるはずです。アプリケーション B の GenericActivity を使用しようとしているのはなぜですか?

0 投票する
0 に答える
473 参照

java - BroadcastreceiverのAndroid DexClassLoader?

BroadcastReceiver のクラスを動的にロードしようとしていますが、この問題で 2 週間以上立ち往生しています。それは私を夢中にさせ、プロジェクトは締め切りに近づいています。

どんな助けでも感謝します。

このコードを使用して、dex クラス ローダーを呼び出します。

次に、上記のコードでこのクラスを呼び出します。

次に、このクラス UserRun が MyOnBootReceiver.class を呼び出します

そのため、DexClassLoader は UserRun クラスのロードに成功しましたが、UserRun クラスは MyonBootReceiver.class を呼び出すことができませんでした。

logcat では、UserRun クラスの実行後にエラーや何も返されません。

それは成功を示します:

しかし、これはロードされません:

MyOnBootReceiver.class コンテンツ:

このチュートリアルに従って、このプロジェクトをビルドします。

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29

理論的にはこれでうまくいくはずです

また、ここに Manifest.xml があります。

Shelvin Suggestion からの LOG CAT (エラー):

0 投票する
2 に答える
2126 参照

android - java.lang.UnsupportedOperationException: クラス ローダーがサポートされていません - Android マルチ dex の問題

多くの JAR を使用する Android アプリがあり、65K メソッドの制限に達しました。この問題を解決するために、multi-dex オプションをサポートする Android Maven Plugin 4.0.0-rc.1 を使用しました。複数のdexファイルを含むAPKファイルを生成できました。classes.dex および classes2.dex です。

ただし、このアプリをタブレットにインストールして実行すると、次の例外が発生します。

PR https://github.com/jayway/maven-android-plugin/pull/425で指定されているものと同じ Dexter クラスを使用しています。

MiApplication のスニペットを以下に示します -

Dexter クラスのロードに使用していたクラスローダーを印刷しましたが、PathClassLoader を使用しているようです。

Dexter クラスは、DexClassLoader 以外からロードされた場合、「サポートされていないクラスローダー」例外をスローします。

Dexter クラスが DexClassLoader から確実にロードされるようにするにはどうすればよいですか? この「サポートされていないクラスローダー」の問題を解決するにはどうすればよいですか?

0 投票する
3 に答える
4202 参照

android - Android Multidex リストのすべてのクラス

ここで説明されているように、ApplicationWrapepr アプローチを使用して、アプリケーションで multidex を使用したいと思いますhttps://plus.google.com/104023661970539138053/posts/YTMf8ADTcFg

--minimal-main-dex オプションを次のような保持ファイルとともに使用しました。

これにより、メインのdexファイルにリストされたクラスが表示されますが、これは問題ありません。次のコードを使用してdexfile内のすべてのクラスをリストするライブラリを使用しますが、新しいDexFileは「classes.dex」のみをチェックするため、メインの「clesses.dex」のエントリを取得し、他のすべてのロードされたdexファイルのエントリは取得しません。 :

今のところ単一のパスは次のように決定されます。

/data/../myapplicationname.apk のような結果になります

リストされたdexファイルのすべてのクラスを取得する別の可能性はありますか? または、現在 ClassLoaders にあるすべてのクラスですか? ライブラリはプロジェクトに不可欠であり、このアプローチを使用して、後でリフレクションを介してコンポーネントの実装を見つけます。

EDIT1 : classes2.dex ファイルが /data/data/com./code_cache/secondary-dexes/com.-1.apk.classes2.dex の下に配置されていることがわかった場合

ただし、このパスで new DexFile() を使用すると、IOEsxception がスローされ、「dexfile を開けません」というメッセージが表示されます。

0 投票する
2 に答える
1399 参照

android - DexClassLoder - パス上にクラスが見つかりませんでした

SDカードに配置された外部JARファイルからクラスをロードしようとしています。多くの人がDexClassLoaderをうまく使いました。

私の手順:

1) jar ファイルからclasses.dexファイルを作成します。

2) 生成された classes.dex ファイルを jar に追加します

3) DexClassLoader を作成します。

4) 内部の dex にあるものを見ると、次のようになります。

5) 負荷クラス:

ここで例外が発生します!:

app_dex ディレクトリが作成されますが、空です。

助けてください!!!

0 投票する
1 に答える
2201 参照

java - Android DexClassLoader エラー、「最適化されたデータ ディレクトリ .. 現在のユーザーが所有していません」

実行時に SD カードから DEX ファイルをロードできる単純な Android アプリケーションを作成しようとしています。

アプリケーションには 2 つのアクティビティがあります。最初のアクティビティは、ボタンのある単純な画面です。ボタンが押されると、loadDex() メソッドが呼び出される 2 番目のアクティビティが起動されます。loadDex() メソッドは、SD カード上の jar ファイルを見つけて、現在のアプリケーションにロードしようとします。

最初のアクティビティのコードは次のとおりです。

2 番目のアクティビティ (DEX ファイルをロードするアクティビティ) のコードは次のとおりです。

この問題は、DexClassLoader コンストラクターが呼び出されたときに発生します。ログに次のエラーが記録されています。

問題を表していると思われるログの行は次のとおりです。

この問題に関するウェブ上の情報はほとんどないので、助けていただければ幸いです。Android 4.2、Api 17 向けのアプリケーションを開発しています。

前もって感謝します。