問題タブ [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 に答える
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

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

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

android - DexClassLoader に関する質問

2日ほど前、AndroidのDexClassLoader Libraryを知りました。かなり平凡なプログラマーとして、このライブラリ/クラス/ツールに関していくつか質問があります。私が持っている質問は、主にこのドキュメントに焦点を当てています:

  1. 外部の.jarまたは.apkファイルをロードすると述べています。今、私は次のように私のプロジェクトを持っていると仮定しましょう:

    Fragment1 を対応するレイアウトで .jar または .apk ファイルに抽出すると、DexClassLoader がこのファイルを実装できるようになります。さらに重要なのは、これらをそのようなファイルに変換する方法です。

  2. モジュール (エクスポートされたフラグメント) にあるすべての関数を実装するにはどうすればよいですか? 私はそれがインターフェイス経由であると推測していますが、それが一種の十分に活用されていない機能であるかのように、オンラインで良い例を見つけていません。

  3. ポイント2と同様に静かですが、このフラグメントを表示するにはどうすればよいですか。インターフェイスを介して解決された場合、実際に呼び出す方法はありません getFragmentManager().beginTransaction().add(R.id.smthng,Fragment1).commit();

これらの質問のいずれかに関する何らかの回答をありがとう:) さらに質問がある場合は、この投稿を更新します。乾杯

ヤコブス

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

android - そこにあるにもかかわらず、NoSuchMethodException

外部apkで動作するアプリケーションに取り組んでいます。このために、私は DexClassLoader を使用して、クラスを外部 apk から -Array にロードし、classes次のようにクラスを操作しました。

外部 APK:

未使用のメソッドがアセンブルされないようにするためのプロガード:

次のように、求められているメソッドに一致するように cArg-Array をわずかに微調整することを除いて、「newInstance」関数をまったく同じ方法で呼び出すことができるため、ロードされたクラスに問題がないことは既に知っています。

の中へ

アプリケーションを起動すると、 をNoSuchMethodException呼び出すとがスローされますm.invoke();が、これはキャッチされます。私が見ることができる唯一の違いは、それgetInstance()が使用されていないことですが、それproguard-ruleを防ぐべきでした.

助けていただければ幸いです

乾杯、ヤコブス