Memtrack-Modul Logcat-Fehler konnte nicht geladen werden

83

Ich bekomme Couldn't load memtrack module (No such file or directory) failed to load memtrack module: -2zur Laufzeit einen Fehler .

StackTrace-Fehler:

 E/SoundPool(1280)       : error loading /system/media/audio/ui/Effect_Tick.ogg 
 E/SoundPool(1280)       : error loading /system/media/audio/ui/KeypressStandard.ogg       
 E/SurfaceFlinger(931)   : glCheckFramebufferStatusOES error 733995180
 E/memtrack(1873)        : Couldn't load memtrack module (No such file or directory)
 E/android.os.Debug(1873): failed to load memtrack module: -2
 E/libEGL(931)           : called unimplemented OpenGL ES API
 E/libEGL(931)           : called unimplemented OpenGL ES API
 E/libEGL(931)           : called unimplemented OpenGL ES API
 E/libEGL(931)           : called unimplemented OpenGL ES API
 E/SurfaceFlinger(931)   : glCheckFramebufferStatusOES error 733995180
 E/SurfaceFlinger(931)   : got GL_FRAMEBUFFER_COMPLETE_OES error while taking screenshot
 E/libEGL(931)           : called unimplemented OpenGL ES API
 E/libEGL(931)           : called unimplemented OpenGL ES API

Manifest:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hive"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:name="com.sit.gems.app.GemsApplication"
        android:theme="@style/AppTheme" >

    <activity
            android:name="com.sit.gems.activity.SplashActivity"
            android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.sit.gems.activity.HomeActivity" android:screenOrientation="portrait"></activity>
    </application>

</manifest>

SplashActivity.java:

package com.sit.gems.activity;
import com.example.hive.R;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class SplashActivity extends FragmentActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_home);
        startActivity(new Intent(SplashActivity.this,HomeActivity.class));
        SplashActivity.this.finish();
    }

}

layout_home.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_above="@android:id/tabs" >

                <FrameLayout
                    android:id="@+id/tab_home"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" />

                <FrameLayout
                    android:id="@+id/tab_video"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" />

                <FrameLayout
                    android:id="@+id/tab_audio"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >
                </FrameLayout>

                <FrameLayout
                    android:id="@+id/tab_blog"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >
                </FrameLayout>

                <FrameLayout
                    android:id="@+id/tab_gal"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >
                </FrameLayout>

                <FrameLayout
                    android:id="@+id/tab_more"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >
                </FrameLayout>
            </FrameLayout>

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:background="@drawable/bottom_bar"
                android:divider="@null" />

            <!-- android:background="#d8e49c" -->
        </RelativeLayout>
    </TabHost>

</LinearLayout>

Ausgabe:

Schließlich wird der leere Bildschirm angezeigt.

Geben Sie hier die Bildbeschreibung ein

Weiß jemand, wie man diese Fehler löst?

Steve
quelle
1
Hast du dein Problem gelöst?
Cocorico
@Cocorico Nein, ich habe dieses Problem noch nicht gelöst. Wussten Sie schon?
Steve
Ich denke du hast eine Pb mit OpenGl. Haben Sie einen Emulator oder ein physisches Gerät verwendet?
Cocorico
@Cocorico Ich benutze einen Emulator.
Steve
2
@ user2450263 das war für mich nicht nützlich
Steve

Antworten:

50

Dieser Fehler, wie Sie in der Frage lesen können, die in den obigen Kommentaren verlinkt ist , führt zu:

"[...] ein Problem beim Laden von {einigen} Hardwaremodulen. Dies könnte etwas mit GPU-Unterstützung, SD-Karten-Handhabung und im Grunde alles zu tun haben."

Der folgende Schritt 1 sollte dieses Problem beheben. Wie ich sehen kann, haben Sie einige seltsame Paketnamen in Ihrem Manifest:

  • package = "com.example.hive" im <manifest>Tag,
  • android: name = "com.sit.gems.app.GemsApplication" für<application>
  • und android: name = "com.sit.gems.activity" in<activity>

Wie Sie wissen, verhindern diese Dinge nicht, dass Ihre App angezeigt wird. Aber ich denke:

das Couldn't load memtrack module error könnte wegen Emulatoren Konfigurationen Probleme auftreten , und weil Ihr Projekt viele Unternehmen Probleme enthält, könnte es ein frisches Redesign geben helfen.

Zur besseren Verwendung und mit wenigen Dingen kann dies durch Befolgen der folgenden Tipps behoben werden:


1. Versuchen Sie es mit einem anderen Emulator ...

Und sogar ein echtes Gerät! Der memtrack moduleFehler scheint mit Ihrem Emulator zu tun zu haben. Also ändern Sie es in Run configuration, vergessen Sie nicht, das auch zu ändern API.


2. OpenGL-Fehlerprotokolle

Bei OpenGlFehlern handelt called unimplemented OpenGL ES APIes sich nicht um einen Fehler, sondern um eine Aussage! Sie sollten es in Ihrem Manifest aktivieren (Sie können diese Antwort lesen , wenn Sie GLSurfaceView darin verwenden HomeActivity.java, es könnte Ihnen helfen):

<uses-feature android:glEsVersion="0x00020000"></uses-feature>  
// or
<uses-feature android:glEsVersion="0x00010001" android:required="true" />

3. Verwenden Sie dasselbe Paket

Deklarieren Sie nicht für alle Tags in unterschiedliche Paketnamen Manifest. Sie sollten das gleiche für haben Manifest, Activitiesetc. ungefähr so aussieht rechts:

<!-- set the general package -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sit.gems.activity"
    android:versionCode="1"
    android:versionName="1.0" >

    <!-- don't set a package name in <application> -->
    <application ... >

        <!-- then, declare the activities -->
        <activity
            android:name="com.sit.gems.activity.SplashActivity" ... >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- same package here -->
        <activity
            android:name="com.sit.gems.activity.HomeActivity" ... >
        </activity>
    </application>
</manifest>  

4. Verlieren Sie sich nicht mit Layouts:

Sie sollten ein anderes Layout festlegen, SplashScreenActivity.javada Sie das TabHostfür den Begrüßungsbildschirm nicht verwenden und dies kein sicherer Ressourcenweg ist. Deklarieren Sie ein bestimmtes Layout mit etwas anderem, wie dem Namen der App und dem Logo:

// inside SplashScreen class
setContentView(R.layout.splash_screen);

// layout splash_screen.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent" 
     android:gravity="center"
     android:text="@string/appname" />  

Vermeiden Sie die Verwendung eines Layouts in Aktivitäten, die es nicht verwenden.


5. Begrüßungsbildschirm?

Schließlich verstehe ich den Zweck von Ihnen nicht klar SplashScreenActivity. Es legt eine Inhaltsansicht fest und beendet direkt. Das ist nutzlos.

Da der Name Splash Screen lautet, gehe ich davon aus, dass Sie einen Bildschirm anzeigen möchten, bevor Sie Ihren starten HomeActivity. Deshalb sollten Sie dies tun und das TabHostLayout nicht verwenden ;) :)

// FragmentActivity is also useless here! You don't use a Fragment into it, so, use traditional Activity
public class SplashActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // set your splash_screen layout
        setContentView(R.layout.splash_screen);

        // create a new Thread
        new Thread(new Runnable() {
            public void run() {
                try {
                    // sleep during 800ms
                    Thread.sleep(800);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // start HomeActivity
                startActivity(new Intent(SplashActivity.this, HomeActivity.class));
                SplashActivity.this.finish();
            }
        }).start();
    }
}  

Ich hoffe, diese Art von Tipps helfen Ihnen, das zu erreichen, was Sie wollen.
Wenn dies nicht der Fall ist, lassen Sie mich wissen, wie ich Ihnen helfen kann.

fllo
quelle
Ich benutze dieTabHost in layout_home.xml
Steve
Und warum haben Sie nichts in SplashScreenActivity? Diese Aktivität zeigt Ihren TabHost?
fllo
Ich wiederhole, ich bin mir nicht sicher, aber Sie sollten mindestens 1, 2 und 4 versuchen. Ich hoffe, das hilft!
fllo
Ich versuche es. Ich werde Ihnen die Ergebnisse später mitteilen.
Steve
1
Ich habe eine Ausgabe. Ihre Antwort ist hilfreich für mich. Sie sind großartig. Ich habe getan, was immer Sie gesagt haben. Schließlich habe ich eine Methode namens blogSelected erstellt und hinzugefügt. Dieses Projekt bezieht sich auf die Anzeige eines Blogs. Ich denke, es ist mein Fehler, diese Methode verpasst zu haben. Wenn ich den Paketnamen nicht ändere, wie Sie sagten, kann ich die Ausgabe nicht erhalten. Ihre Antwort ist wirklich hilfreich mir. Danke, schönen Tag noch.
Steve
4

Ich hatte den gleichen Fehler. Das Erstellen einer neuen AVD mit der entsprechenden API-Ebene hat mein Problem gelöst.

Aysenur
quelle
0

Ich hatte das gleiche Problem, aber als ich den Skin des AVD-Geräts auf HVGA umstellte, funktionierte es.

Strahl
quelle
0

Für Leute, die Xamarin verwenden

Ich habe festgestellt, dass das Festlegen der Verknüpfung zu Sdk Assemblies Only den Trick ausführt: Projekt -> Eigenschaften -> Android-Optionen -> Registerkarte Linker -> Verknüpfung:

Geben Sie hier die Bildbeschreibung ein

Pierre
quelle
-2

Haben Sie den ViewTreeObserver aufgerufen und ihn nicht entfernt?

    mEtEnterlive.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
         // do nothing here can cause such problem
    });
baiiu
quelle
-2

Ich hatte auch dieses Problem, das auch auf einem Emulator ausgeführt wurde. Dieselbe Meldung wurde auf Logcat angezeigt, hatte jedoch keine Auswirkungen auf die Funktionalität der App. Aber es war ärgerlich und ich mag es nicht, Fehler im Protokoll zu sehen, die ich nicht verstehe.

Wie auch immer, ich habe die Nachricht durch Erhöhen des RAM auf dem Emulator beseitigt.

InquisitiveCrow
quelle