問題タブ [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.
java - Android クラス ローダー エラー
jar ファイルで ScreenX クラスをインスタンス化し、このサイトのすべてのソリューションを試したいのですが、実行できません。
私は2つのファイルを持っています;
コードを垂らしてみました。
これは私の plugin.jar の ScreenX クラスのコードです。
package com.example.plugins;
実用的なサンプルはありますか? 助けてください...
android - dex ファイルからメソッドを実行するときにリソースを読み取れない
コードとリソース ( ) を含む jar ファイルがありましたResourceBundle
。
そのjarを使用してAndroidスタジオで簡単なプロジェクトを作成し、コンパイルし、抽出して2番目のプロジェクトに.apk
コピーしました。classes.dex
また、抽出した .apk から 2 番目のプロジェクトにリソースをコピーしました。
2 番目のプロジェクトから、.dex ファイルからクラスをロードしました。そのクラスから (dex ファイルから) リソースを読み取るメソッドを実行すると、リソースが見つからない場合、例外がスローされます。
失敗する行:
私が実行した場合:
2番目のプロジェクトから(dex内からではなく)、問題なく動作します-リソースを取得します。
アイデアはありますか?
ありがとう
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 を使用しようとしているのはなぜですか?
java - BroadcastreceiverのAndroid DexClassLoader?
BroadcastReceiver のクラスを動的にロードしようとしていますが、この問題で 2 週間以上立ち往生しています。それは私を夢中にさせ、プロジェクトは締め切りに近づいています。
どんな助けでも感謝します。
このコードを使用して、dex クラス ローダーを呼び出します。
次に、上記のコードでこのクラスを呼び出します。
次に、このクラス UserRun が MyOnBootReceiver.class を呼び出します
そのため、DexClassLoader は UserRun クラスのロードに成功しましたが、UserRun クラスは MyonBootReceiver.class を呼び出すことができませんでした。
logcat では、UserRun クラスの実行後にエラーや何も返されません。
それは成功を示します:
しかし、これはロードされません:
MyOnBootReceiver.class コンテンツ:
このチュートリアルに従って、このプロジェクトをビルドします。
理論的にはこれでうまくいくはずです
また、ここに Manifest.xml があります。
Shelvin Suggestion からの LOG CAT (エラー):
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 から確実にロードされるようにするにはどうすればよいですか? この「サポートされていないクラスローダー」の問題を解決するにはどうすればよいですか?
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 向けのアプリケーションを開発しています。
前もって感謝します。