問題タブ [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 インストルメンテーション テスト ケース
他の apk からアクティビティをテストしたいと思います。アクティビティとインストルメンテーションを取得する必要があるため、このテストは ActivityInstrumentationTestCase2 ( http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html ) を拡張します。
私は次のように DexClassLoader を使用しようとしています:
しかし、結果として例外が発生します:optimizedDirectory not readable/writable: /data/data/valentin.myapplication2
それを行うための解決策はありますか?
これを後で使用するため、アクティビティが必要です。activity.getWindow().getDecorView()
ご参考までに:
android - アンドロイド DexClassLoader. というメソッドを取得できません
- dx ツールを使用して、DexClassLoader を使用して、Java jar から DEX に変換された jar ファイルをロードしています。
- jar ファイルは /storage/sdcard0/Download/br_applications/calculator.dx.jar にあります。
- 私は権限を持っています:
私のコードは(+/-)です:
/li>- .apk ファイルで試しました。そして結果は最悪です。クラスをロードできません...
- .aar ファイルを試してみました。そして結果は悪かった。
- ¿誰か私にコードを教えてもらえますか?
- 私は Android Studio を使用しており、Java Jar であるモジュールを備えた偽の apk アプリケーションを使用して jar ファイルを作成しています。dx ツールを使用して dx.jar ファイルを作成します。 dx --dex --output calculator.dx.jar calculator.jar ありがとうございます。
java - アンドロイド | DexClassLoader、ClassNotFound 例外
だから私は自分のアプリケーションから書いたクラスを読み込もうとしていますが、 ClassNotFound 例外を受け取っています。
クラス:
次に、次のコマンドを使用して jar ファイルを作成します。
次のステップは、jar ファイルの classes.dex を作成し、それを jar に追加することです。
これまでのところ、すべてがうまく機能し、エラーはありません。
このステップの最後に、jar ファイルは次のようになります。
私のマニフェストファイルには次の行が含まれています:
今私のアプリケーション内で私はこれをやっています:
ノート:
- myclass.jar ファイルを
Environment.getExternalStorageDirectory()
ディレクトリとアプリケーションがファイルを正しく読み取っていることを確認しました。
- マニフェスト ファイルに必要なアクセス許可を設定しました (外部ストレージへの読み取りと書き込み)
私にエラーを与える行は次のとおりです。
エラー:
これは抑制された例外です:
私は何を間違っていますか?
android - DexClassLoader と PathClassLoader の違いは何ですか?
.dex ファイルを含む .jar ファイルをディレクトリ "/sdcard" に置き、DexClassLoader と PathClassLoader をそれぞれ使用して、.jar ファイルにクラスをロードしようとしました。どちらもクラスを正常にロードできます。それらの違いは何ですか?これが私のコードです:
android - ネイティブ メソッド DexFile.defineClassNative の Android IllegalAccessError
私のプロジェクトでこの例外が発生しました:
私のターゲット API は 23 です。
そして、私のビルドツールは classpath 'com.android.tools.build:gradle:1.5.0'
これを引き起こす aar は、dagger、rxjava、および otto を使用しています。したがって、登録機能はotto用です。
どうすれば解決できますか
私をさらに混乱させたのは、このアプリを6.0デバイスで実行しましたが、dalvik.systemパッケージで例外が発生したことです
さらに、apk の dex ファイルを確認します。前に追加された 2 つの aar が同じ dex ファイル、つまりプロジェクトの 2 番目の dex ファイルにあることを示しています (Google の mulltidex ツールを使用して、アプリケーションを multidex に分割します)。
java - Android クラス解決の見知らぬもの
Android でかなりの数の動作を観察しています (私は multidex の問題に取り組んでいるため、4.4.4 でエミュレーターを使用しています)。
Androidでは、クラス ローダーによってロードされるときにクラスが解決されることは想定されていません。しかし、クラスを作成すると:
アプリをデバッグし、ウォッチを追加します。
次に、読み込みM
が読み込まFoo
れ、Foo2
!
したがって、クラスは解決されます。
不思議なことに、それはほぼ 2 番目の質問ですが、 を追加するM extends Application
と、M
インスタンス化してもまったく解決されません。が呼び出されたときにのみ JVM にロードされます ( は、Foo
のFoo2
場合にロードされます) 。m(X)
Foo
X
"0"
Foo2
X="1"
ここにいる誰かが、これらの根底にある質問について合理的な説明を持っていますか?
- なぜ解決されるのか
M
、クラスは解決されるべきではありません。インスタンス化してもM
ロードしないでくださいFoo
orat least Foo2
. Application
クラス拡張の動作が異なるのはなぜですか?- 別の方法で動作する他の Android クラスはありますか?
java - DexClassLoader を使用して、動的にロードされた apk からネイティブ ライブラリをロードする
動的に使用して APK から dex ファイルをロードしています。APKDexClassLoader
には、次のパスにもパッケージ化されたネイティブ ライブラリが含まれています。
は、ロードするネイティブ ライブラリを検索するためのDexClassLoader
filePath を受け入れます。
librarySearchPath文字列: File.pathSeparator で区切られた、ネイティブ ライブラリを含むディレクトリのリスト。nullの可能性があります
しかし、この検索パスはファイルシステム パスしか受け付けないようです。
APK 内でネイティブ ライブラリの検索パスを直接提供する方法はありますか? または、ネイティブ ライブラリを手動で特定の場所に抽出し、抽出したパスを提供する必要がありますか?