問題タブ [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 - DexClassLoader - 機能の追加
新しい機能でアプリを「更新」できるかどうかを確認するために、DexClassLoader でいくつかのテストを行っています。現在、testClass で動作し、test() メソッドを実行するテスト用のこのメソッドがあります。知りたいのは、既存のクラスを「置換」または「更新」する方法です。アイデアやその他の提案は大歓迎です。
方法:
android - 暗号化された apk を読み込み、オンザフライで復号化する
暗号化された jar ファイルを動的にロードしたい。Dex ファイルを動的にロードしましたが、正常に動作します。エミュレータとAndroidデバイスの両方で試しました。今、暗号化されたファイルをロードしたいと思います。私が理解している限り、クラスローダーをカスタマイズして、ファイルを実行する前にその場で復号化できるようにする必要があります。
誰かがこれを実際に実装する方法を教えてくれたらうれしいです。私にはアイデアがありますが、経験豊富なプログラマーではありません。
前もって感謝します
public class MainActivity extends Activity {
}
android - Android がクラスを決してアンロードしないというのは、まだ事実ですか?
恐ろしいメソッド数の制限に常に達している大規模なアプリがあります。プラグインのサポートを含め、もっと多くのことができるようにする方法を考え出すように依頼されました。コードをアンロードする方法を探していると、JNI のヒントに出くわしました。
クラスは、ClassLoader に関連付けられたすべてのクラスがガベージ コレクションできる場合にのみアンロードされます。これはまれですが、Android では不可能ではありません。
これは、次の場合にプラグインをアンロードできることを意味しているように見えました。
DexClassLoader
.jar ファイルごとに新しいものを使用し、- インターフェイス参照を介してのみプラグインを参照し、
- 完了したら、そのインターフェイス参照のすべてのコピーを null にします。
だから、私はテストケースを作成しました:
- それぞれに固有のローダーを使用して、いくつかの簡単なプラグインを作成しました。
ReferenceQueue<ClassLoader>
そのキューを使用して、2 つのローダーへの弱参照を作成しました。無期限にループするスレッドを作成/開始し、キュー.remove()
とレポートを実行しました。- 同様に、キューを使用し
ReferenceQueue<Class<?>>
て各プラグインへの弱参照を作成しました。getClass()
クラス参照キューを監視する別のスレッドを作成/開始しました。 - 1000x1000xARGB_8888 ビットマップを 1000 個作成して、gc を徹底的に強制します。
私の監視スレッドは機能しているようです -誤って両方のプラグインをロードしてloader2
いたときに gc-ed になっているのを見ましloader1
た ;-) - それ以外の場合、私のスレッドは 4.3 でもサイレントのままです。このテストケースで明らかな何かが欠けている可能性がありますか、それともまだそうですか
Dalvik VM は現在、クラスをアンロードしていません
Google の従業員faddenが Android で言うように: クラスはいつシステムによってアンロードされますか?
android - DexClassLoaderによるjarからのandroid startactivity
jar ファイルを sd カードに入れました。jar ファイルは dx によって処理されています。アクティビティ内のjarで、jarファイルでアクティビティを開始する方法は?
android - Delphi xe5 JNI: ClassNotFoundException
stackoverflow ( http://www.pclviewer.com/android/androidJNI.html ) で提供されているチュートリアルに従って、デバイス固有のライブラリをインポートしてスキャナー (Honeywell 70e Black) を処理しました。
TJDexClassLoader は正しくインスタンス化されますが (nil ではありません...)、必要な内部クラスをロードできません...
私は日食の下でライブラリを開き、文字列を何度もチェックしましたが、問題はありませんでしたが、次の例外が発生しました:
それが機能する場合、すぐに新しい問題に行き詰まることがわかっています。インスタンス化するクラスに Context と Handler を提供することです。その署名は次のとおりです。
アドバイスやアドバイスよろしくお願いします(^^)