問題タブ [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.
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>
android - findViewById の奇妙な ClassCastException
オンラインで奇妙な例外がスローされるのを観察します。
例外は次のようになります。
再現できませんが、ログによると時々発生します。
このアプリは、gradle を使用した公式の multidex ビルドを使用しています。
java - DexClassLoader の使用方法
.jar を動的に追加したい。というわけでデモを作ります。しかし、DexClassLoader を新しくする方法がわかりません。最初のパラメーターを追加する方法がわかりません。
動的 .jar を test.jar(become dex) として作成し、プロジェクトに新しいフォルダー 'text' を作成し、そこに text.jar を入れました。
私が何を間違えたのかを理解するのを手伝ってもらえますか?
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 を削除するよう提案されましたが、それを削除すると、エラーのためにビルドできなくなります。
助けて、ありがとう。
android - アプリケーションのインストール後に、2 番目の dex のロードが完了したかどうかを確認するにはどうすればよいですか?
私たちのアプリケーションには、マルチデックス機能を備えたグラドルによって構築された apk に 3 つのデックスがあります。
アプリケーションをインストールした後、
メインの dex と 2 番目の dex は同じクラス ローダーによってロードされましたか?
2 番目 ( classes2.dex ) と 3 番目のロードが完了したかどうかを確認するにはどうすればよいですか? コードで動的にチェックできますか?
または、Android でクラス (または dex ) をロードする手順に関する関連ドキュメントを紹介できますか? 私はこれに精通していません。
ありがとうございました。
java - Android クラスローダが別のパッケージから package-private クラスの public フィールドへのリフレクション アクセスを許可するのはなぜですか?
Android アプリケーション クラス ローダーは、public static
(前述のクラスが定義されているものとは異なる) 別のパッケージからでもパッケージ プライベート クラスのフィールドへの参照を反射的に取得できるようですが、たとえば Sun JDK クラスローダーはそうではありません。
より具体的には、次のクラス定義が与えられます。
そして、別のパッケージの次のコード:
Sun JVM で実行するIllegalAccessException
と、最後の行で次のようにスローされます。
ただし、Android デバイス (5.1 Lollipop FWIW) で実行すると、スローせずに実行され、creatorFieldRef.get(null)
実際にはフィールドへの有効な参照が返されCREATOR
ます。
私の質問は次のとおりです。なぜそうなのですか?Androidクラスローダーのバグか機能ですか?? (または、該当する場合、私の例で何が間違っていましたか?)
android - Android: DexClassLoader: xx エラーから DEX を抽出して最適化できません: 子プロセスがありません
DexClassloader を使用して、次のように /data/data/packagename/ から dex ファイルをロードします。
ほとんどのマシンとシステムで完全に動作します.......しかし、今日、dex ファイルを読み込めないというユーザー フィードバックがありました。重要なエラー ログは次のとおりです。
電話情報: HTC 9060、Android 4.2.2、HTC Sense 5.0
変なバグです。完全なログは次のとおりです。
android - DexClassLoader に関する質問
2日ほど前、AndroidのDexClassLoader Libraryを知りました。かなり平凡なプログラマーとして、このライブラリ/クラス/ツールに関していくつか質問があります。私が持っている質問は、主にこのドキュメントに焦点を当てています:
外部の.jarまたは.apkファイルをロードすると述べています。今、私は次のように私のプロジェクトを持っていると仮定しましょう:
Fragment1 を対応するレイアウトで .jar または .apk ファイルに抽出すると、DexClassLoader がこのファイルを実装できるようになります。さらに重要なのは、これらをそのようなファイルに変換する方法です。
モジュール (エクスポートされたフラグメント) にあるすべての関数を実装するにはどうすればよいですか? 私はそれがインターフェイス経由であると推測していますが、それが一種の十分に活用されていない機能であるかのように、オンラインで良い例を見つけていません。
- ポイント2と同様に静かですが、このフラグメントを表示するにはどうすればよいですか。インターフェイスを介して解決された場合、実際に呼び出す方法はありません
getFragmentManager().beginTransaction().add(R.id.smthng,Fragment1).commit();
これらの質問のいずれかに関する何らかの回答をありがとう:) さらに質問がある場合は、この投稿を更新します。乾杯
ヤコブス
android - そこにあるにもかかわらず、NoSuchMethodException
外部apkで動作するアプリケーションに取り組んでいます。このために、私は DexClassLoader を使用して、クラスを外部 apk から -Array にロードし、classes
次のようにクラスを操作しました。
外部 APK:
未使用のメソッドがアセンブルされないようにするためのプロガード:
次のように、求められているメソッドに一致するように cArg-Array をわずかに微調整することを除いて、「newInstance」関数をまったく同じ方法で呼び出すことができるため、ロードされたクラスに問題がないことは既に知っています。
の中へ
アプリケーションを起動すると、 をNoSuchMethodException
呼び出すとがスローされますm.invoke();
が、これはキャッチされます。私が見ることができる唯一の違いは、それgetInstance()
が使用されていないことですが、それproguard-rule
を防ぐべきでした.
助けていただければ幸いです
乾杯、ヤコブス