問題タブ [android-runtime]

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.

0 投票する
0 に答える
404 参照

java - Dagger2 ランタイムの問題

依存性注入のためにdagger2を実装しようとしています。以前は依存性注入に Roboguice を使用していましたが、RG3 に更新すると動作しなくなりました。注入されたビューはすべて null でした。だから私はDagger2を使おうとしています。dagger1 の経験はありません。

以下は、私が使用しようとしているクラスです。

したがって、上記のモジュールでは、必要なすべてのオブジェクトをインスタンス化します。

以下は私のコンポーネントクラスです

これは私のインジェクタークラスです

インジェクターは、アプリケーション クラス onCreate() で初期化されています。

次に、さまざまなアクティビティの onCreate と、ConnectionManager、AccountManager、EdgeConnection などのクラスの場合、コンストラクターで使用して、コンポーネントを使用してフィールド メンバーを注入します。

しかし、アプリケーションの起動時に、次のログを取得します...そして、それは続きます。その後、スタックオーバーフローが発生し、アプリがクラッシュします。何も表示されません。

01-04 15:30:36.761 12125-12125/? A/art: sart/runtime/runtime.cc:292]
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46) 01-04 15:30:36.761 12125-12125/? A/art: sart/runtime/runtime.cc:292] - ロックされた <0x13515e62> (dagger.internal.ScopedProvider)

0 投票する
0 に答える
2545 参照

java - ネイティブ スレッドを VM に接続中に ART エラーが発生する

Android プロジェクトに Java とネイティブ コンポーネントがあります。ネイティブはレガシー コードであり、私の組織はコード全体を再度書き直すためにリソースを無駄にしたくないため、必須です。ネイティブ コードでは、イベントを Java レイヤーに投稿する必要があるため、同じことを達成するために「AttachCurrentThread()」関数と「DetachCurrentThread()」関数を使用しています。コードの繰り返しを避けるために API を作成しました。同じ機能は正常に機能していましたが、いくつかの呼び出しの後、以下のエラーでクラッシュしました。

このエラーをグーグルで検索しようとしましたが、無駄でした。誰でもこのエラーを解決するために私を導くことができますか? ご指導も大歓迎です。

ありがとう。

0 投票する
0 に答える
123 参照

android - Android でランタイムを取得する 適切なランタイムを提供していない

デバイスでランタイムを取得しようとしています.2つのデバイス、Xperia Z1、注4で次の方法をテストしました.

私が試した次のコード:

このコードは 2.1 を返します。いくつかのスタックオーバーフローの回答が言うように、2.0 より大きいバージョンは ART であることを意味しますが、私のランタイムは Dalvik です。

このコードは、常に Dalvik を返します。

以下もDalvikを返しますが、正確に適用されたランタイムを返すとは思いません。

助言がありますか ?

0 投票する
1 に答える
335 参照

android-fragments - 致命的な例外: java.lang.RuntimeException : アクティビティを開始できません

やあみんな Android studio の新人です。フォローしてくれます。私は ActionBarSherlock ライブラリを使用し、ユーザーがアプリケーションを一時停止したときに現在の Fragment インスタンスの参照を保持します。

0 投票する
0 に答える
354 参照

android - Android で動的ライブラリを固定アドレスに配置するように強制する

動的ライブラリを特定のメモリ アドレスに強制的にロードしたいと考えています。これを達成するために私は何をすべきですか?動的リンカーを変更しますか? 静的リンカに指示を出してください。多分リンカースクリプト?

私は Android で作業しています。Android アプリケーションを起動すると、Bionic C ライブラリが次の場所に読み込まれます。

私が望むのは、動的リンカー/静的リンカー (または何でも) にいくつかのヒントを与えることです。そのため、別のアプリケーション (実際には純粋な C プログラム) を起動するlibc.soと、同じ領域に再度読み込まれます。ASLR に問題がある場合は、無効になっていると見なすことができます。

現在、私の C プログラムにはlibc、Android アプリとは異なるマッピングがあります。

注: ASLR を無効にして、両方の実行を同じ再起動で行いました。Androidアプリは純粋なCプログラムよりもはるかに多くの共有ライブラリにリンクしているため、それらは異なる領域にあると思います。

私は何をしたいですか?

  1. 理想的にはlibc、純粋な C プログラムの を Android プログラムと同じアドレスにマッピングしたいと思います
  2. 少なくとも、libc便利だと思う場所に配置する方法(たとえば、VMAスペースの下部など)
  3. 静的にリンクして libc を C プログラムの一部にする

最後に、を C プログラムに静的にリンクすることを試みたlibc.aので、共有ライブラリとしてまったくロードされませんが、android linker実行時に失敗していました。

0 投票する
2 に答える
67 参照

java - Android - AVD で実行しようとするとすぐにアプリがクラッシュする

税務アプリの個人的な挑戦でAndroidアプリ開発を学んでいます。テキスト エディターにエラーは表示されませんが、AVD でアプリを実行すると、起動ページが表示される前にアプリがクラッシュします。

私のマニフェストファイル

私の主な活動

私が得るエラー

0 投票する
0 に答える
391 参照

android - Android ART のロード dex の失敗

関連するコードは次のとおりです。

別のスタック トレース:

ご覧のとおり、jars_fusion.dex は、Android プラットフォーム上のアプリの大きな dex ファイルです。また、メソッドは dex で正常に検出されますが、その dex でメソッドを呼び出している間に JNI クラッシュが発生します。さらに、この問題は私のデバイスまたはテスターでは再現できませんが、クラッシュ オート コレクター システムから報告されています。

では、問題の本当の原因は何なのか、それとも単なるシステム障害なのか?

0 投票する
1 に答える
1212 参照

android - ARTガベージコレクションのAndroidの一時停止時間は、メインスレッドまたはワーカースレッドを示していますか?

以下の GC ログ「一時停止 1.439 ミリ秒」が、CMS が作業しているバックグラウンド スレッドの一時停止時間を意味するのか、それともメイン スレッドの一時停止時間を意味するのかを知っている人はいますか?

I/art: バックグラウンド スティッキー コンカレント マーク スイープ GC 解放 266189(12MB) AllocSpace オブジェクト、0(0B) LOS オブジェクト、14% 解放、46MB/54MB、一時停止 1.439ms 合計 179.694m

よろしくお願いします!

0 投票する
0 に答える
2022 参照

android - MediaCodec の弱いグローバル参照テーブルのオーバーフロー

Nvidia TX1 開発キットの SurfaceTexture にストリーミング オーディオおよびビデオ データをデコードするために、いくつかの MediaCodec インスタンスをインスタンス化するアプリに取り組んでいます。1 つのオーディオ デコーダーと 1 つのビデオ デコーダーを数分間使用しただけで、弱いグローバル参照テーブルのオーバーフローに関するエラーが表示されます。

Android イメージを再コンパイルできるので、表示されるエントリのリストを 10 から 100 に拡張しました。

記録のために、私は自分のコードで弱い参照を使用していません。また、アプリで直接 JNI を使用していません。

これは私のコードの下にある何かのバグのようです。アプリがクラッシュすると、JNISurfaceTexture スレッドで発生します。どうやらスレッドをスリープ状態にすると、このテーブルに別のエントリが作成されます。これは、ランタイムの背中を壊すストローのようです。

ほとんどのエントリは「cleared jweak」であるように見えます。これは、実際には使用されていないことを示しています。要約情報も、表にあると思われる 51200 エントリに近いところまで加算されません。

弱いグローバル参照を追跡し、スタック トレースを取得しました。

最初は、おそらくこれは、MediaCodec が書き込んでいる SurfaceTexture で setSurfaceTextureListener() を使用することに関連していると思いました。ただし、これをプログラムから削除しても役に立ちませんでした。デバッガーが関与しているように見えますか?

アプリケーション層からこれを修正するためにできることはありますか? 私はおそらくガベージコレクションに飢えていますか?または、これは Android/Nvidia の問題ですか?

0 投票する
1 に答える
166 参照

java - Javaの三項演算子: ART時に条件付き移動(アセンブリ)に似た動作は可能ですか?

Java の三項演算子に関するいくつかの疑問を解消したいと思います。

Java では、x = (c ? a : b) のようになります。私が読んで経験したことから、分岐 if/else として実行されるようです。つまり、1 つのステートメントのみが評価されます (a または b のいずれかであり、両方ではありません)。それが常に真実かどうか知りたいです。

C では、式 a と b の両方を評価する条件付き移動にコンパイルされる場合があります。

正確には、Android コードにも当てはまるかどうかを知りたいです。最近の OS を搭載したデバイスにインストールすると、Java バイトコードが実際にネイティブの命令に変換されることがわかっている ( Android ランタイム (ART)を参照)。ART の後に条件付きの動きが現れるリスクはありますか?

例を見てみましょう。以下を含む基本クラス:

プログラムの実行中にgetIncrementedCounterが複数回呼び出された場合、関数testOperatorは常に true を返しますか? (コードが単一のスレッドで実行されると仮定)

問題を確実に回避するために if/else ブランチを使用する必要があることはわかっていますが、それでも疑問に思います....