問題タブ [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.
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 を開けません」というメッセージが表示されます。
android - DexClassLoder - パス上にクラスが見つかりませんでした
SDカードに配置された外部JARファイルからクラスをロードしようとしています。多くの人がDexClassLoaderをうまく使いました。
私の手順:
1) jar ファイルからclasses.dexファイルを作成します。
2) 生成された classes.dex ファイルを jar に追加します
3) DexClassLoader を作成します。
4) 内部の dex にあるものを見ると、次のようになります。
5) 負荷クラス:
ここで例外が発生します!:
app_dex ディレクトリが作成されますが、空です。
助けてください!!!
java - Android DexClassLoader エラー、「最適化されたデータ ディレクトリ .. 現在のユーザーが所有していません」
実行時に SD カードから DEX ファイルをロードできる単純な Android アプリケーションを作成しようとしています。
アプリケーションには 2 つのアクティビティがあります。最初のアクティビティは、ボタンのある単純な画面です。ボタンが押されると、loadDex() メソッドが呼び出される 2 番目のアクティビティが起動されます。loadDex() メソッドは、SD カード上の jar ファイルを見つけて、現在のアプリケーションにロードしようとします。
最初のアクティビティのコードは次のとおりです。
2 番目のアクティビティ (DEX ファイルをロードするアクティビティ) のコードは次のとおりです。
この問題は、DexClassLoader コンストラクターが呼び出されたときに発生します。ログに次のエラーが記録されています。
問題を表していると思われるログの行は次のとおりです。
この問題に関するウェブ上の情報はほとんどないので、助けていただければ幸いです。Android 4.2、Api 17 向けのアプリケーションを開発しています。
前もって感謝します。
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
変なバグです。完全なログは次のとおりです。