問題タブ [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 投票する
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 向けのアプリケーションを開発しています。

前もって感謝します。

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

dexclassloader - Android5.0でDexClassloaderの実行エラー

Android5.0 より前,私は DexClassloader ロード プラグインを動的に使用しています,次のようなコード:</p>

ただし、Android5.0 では次のエラーが表示されます:</p>

04-03 05:51:42.743: W/(1462): Zip: 中央ディレクトリの最後に 792 余分なバイトがある 04-03 05:51:42.749: W/System.err(1462): java.lang.ClassNotFoundException : パスにクラス "com.garfield.item0.system.plugin01.AckGetIntroduce" が見つかりませんでした: DexPathList[[zip ファイル "/data/data/com.garfield/cache/1428040302214.jar"],nativeLibraryDirectories=[/vendor /lib、/system/lib]] 04-03 05:51:42.811: W/System.err(1462): 抑制: java.io.IOException: zip アーカイブ '/data/data/com.garfield/ を開けませんでしたcache/1428040302214.jar' 04-03 05:51:42.820: W/System.err(1462): dalvik.system.DexFile.openDexFileNative(ネイティブ メソッド) 04-03 05:51:42.820: W/System.err (1462): dalvik.system.DexFile.openDexFile(DexFile.java:295) 04-03 05:51:42.821: W/System.err(1462): dalvik.system で。DexFile.(DexFile.java:111) 04-03 05:51:42.821: W/System.err(1462): dalvik.system.DexFile.loadDex(DexFile.java:151) 04-03 05:51:42.821 : W/System.err(1462): dalvik.system.DexPathList.loadDexFile(DexPathList.java:265) で

なぜ?助けてください!5.0より前は大丈夫です。5.0で何が起こったのですか!</p>

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

android - findViewById の奇妙な ClassCastException

オンラインで奇妙な例外がスローされるのを観察します。

例外は次のようになります。

再現できませんが、ログによると時々発生します。

このアプリは、gradle を使用した公式の multidex ビルドを使用しています。

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

java - DexClassLoader の使用方法

.jar を動的に追加したい。というわけでデモを作ります。しかし、DexClassLoader を新しくする方法がわかりません。最初のパラメーターを追加する方法がわかりません。

動的 .jar を test.jar(become dex) として作成し、プロジェクトに新しいフォルダー 'text' を作成し、そこに text.jar を入れました。

私が何を間違えたのかを理解するのを手伝ってもらえますか?

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

java - ロードされたクラスを外部 apk からインターフェイス クラスにキャストする方法

//Interface クラス -> myinterface.jar にパッケージ化

//プロジェクト 1 - myinterface.jar をインクルードし、classA.apk にパッケージ化

//メインプロジェクト // myinterface.jarを同梱 // このクラス(ClassB)から、classA.apkファイルの「ClsA」から「newPoint」メソッドを呼び出したい。

質問 1. (*): インスタンスの後に返される "obj" を MyInterface クラスにキャストできません。

-> エラー:

なぜだめですか?com.testing.classa.ClsA では MyInterface を拡張していましたか?

質問 2. (**) で: エラー、

メインクラスにはインターフェース myinterface.jar があり、classA.apk にも myinterface.jar があり、それらは一緒に話すことができないと思います。この問題の解決策は何ですか?

p/s: Google で検索したところ、.apk (ここでは myinterface.jar) から一般的な lib を削除するよう提案されましたが、それを削除すると、エラーのためにビルドできなくなります。

助けて、ありがとう。

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

android - アプリケーションのインストール後に、2 番目の dex のロードが完了したかどうかを確認するにはどうすればよいですか?

私たちのアプリケーションには、マルチデックス機能を備えたグラドルによって構築された apk に 3 つのデックスがあります。

アプリケーションをインストールした後、

  1. メインの dex と 2 番目の dex は同じクラス ローダーによってロードされましたか?

  2. 2 番目 ( classes2.dex ) と 3 番目のロードが完了したかどうかを確認するにはどうすればよいですか? コードで動的にチェックできますか?

  3. または、Android でクラス (または dex ) をロードする手順に関する関連ドキュメントを紹介できますか? 私はこれに精通していません。

ありがとうございました。

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

java - Android クラスローダが別のパッケージから package-private クラスの public フィールドへのリフレクション アクセスを許可するのはなぜですか?

Android アプリケーション クラス ローダーは、public static(前述のクラスが定義されているものとは異なる) 別のパッケージからでもパッケージ プライベート クラスのフィールドへの参照を反射的に取得できるようですが、たとえば Sun JDK クラスローダーはそうではありません。

より具体的には、次のクラス定義が与えられます。

そして、別のパッケージの次のコード:

Sun JVM で実行するIllegalAccessExceptionと、最後の行で次のようにスローされます。

ただし、Android デバイス (5.1 Lollipop FWIW) で実行すると、スローせずに実行され、creatorFieldRef.get(null)実際にはフィールドへの有効な参照が返されCREATORます。

私の質問は次のとおりです。なぜそうなのですか?Androidクラスローダーのバグか機能ですか?? (または、該当する場合、私の例で何が間違っていましたか?)

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

android - Android: DexClassLoader: xx エラーから DEX を抽出して最適化できません: 子プロセスがありません

DexClassloader を使用して、次のように /data/data/packagename/ から dex ファイルをロードします。

ほとんどのマシンとシステムで完全に動作します.......しかし、今日、dex ファイルを読み込めないというユーザー フィードバックがありました。重要なエラー ログは次のとおりです。

電話情報: HTC 9060、Android 4.2.2、HTC Sense 5.0

変なバグです。完全なログは次のとおりです。