Nie można załadować modułu memtrack. Błąd Logcat

84

W czasie wykonywania pojawia się błąd Couldn't load memtrack module (No such file or directory) failed to load memtrack module: -2.

Błąd StackTrace:

 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

Oczywisty:

<?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>

Wynik:

Wreszcie wyświetla pusty ekran.

wprowadź opis obrazu tutaj

Czy ktoś wie, jak rozwiązać te błędy?

Steve
źródło
1
czy rozwiązałeś swój problem?
Cocorico
@Cocorico no i nie rozwiązałem jeszcze tego problemu.
Steve
Myślę, że masz PB z OpenGl. Czy używałeś emulatora lub urządzenia fizycznego?
Cocorico
@Cocorico Używam emulatora.
Steve
2
@ user2450263, który nie był dla mnie przydatny
Steve

Odpowiedzi:

51

Ten błąd, jak możesz przeczytać w pytaniu, do którego link znajduje się w komentarzach powyżej , powoduje:

„[...] problem z ładowaniem {jakiegoś} modułu sprzętowego. Może to mieć coś wspólnego z obsługą GPU, obsługą karty SD, w zasadzie cokolwiek”.

Poniższy krok 1 powinien rozwiązać ten problem. Jak widzę, w swoim manifeście masz dziwne nazwy pakietów:

  • pakiet = "com.example.hive" w <manifest>tagu,
  • android: name = "com.sit.gems.app.GemsApplication" dla<application>
  • i android: name = "com.sit.gems.activity" w<activity>

Jak wiesz, te rzeczy nie blokują wyświetlania aplikacji. Ale myślę:

Couldn't load memtrack module errormógł wystąpić z powodu problemów i emulatory konfiguracjach, ponieważ projekt zawiera wiele problemów organizacyjnych, może pomóc, aby dać nową przeprojektowania.

Aby lepiej korzystać z kilku rzeczy, można to rozwiązać, postępując zgodnie z tymi wskazówkami:


1. Wypróbuj inny emulator ...

A nawet prawdziwe urządzenie! memtrack moduleBłąd wydaje się związany z emulatora. Więc zmień to na Run configuration, nie zapomnij zmienić APIteż.


2. Dzienniki błędów OpenGL

W przypadku OpenGlbłędów, ponieważ called unimplemented OpenGL ES APInie jest to błąd, ale oświadczenie! Powinieneś włączyć to w swoim manifeście (możesz przeczytać tę odpowiedź, jeśli używasz GLSurfaceView w środku HomeActivity.java, może ci to pomóc):

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

3. Użyj tego samego opakowania

Nie deklaruj różnych nazw pakietów do wszystkich tagów w Manifest. Powinieneś mieć taki sam dla Manifest, Activitiesitd Coś Prawo to wygląda:

<!-- 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. Nie zgub się z układami:

Powinieneś ustawić inny układ dla, SplashScreenActivity.javaponieważ nie używasz jako TabHostekranu powitalnego i nie jest to bezpieczny sposób na wykorzystanie zasobów. Zadeklaruj konkretny układ z czymś innym, na przykład nazwą aplikacji i 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" />  

Unikaj używania układu w działaniach, które go nie używają.


5. Ekran powitalny?

Wreszcie, nie rozumiem jasno celu twojego SplashScreenActivity. Ustawia widok treści i bezpośrednio kończy. To jest bezużyteczne.

Ponieważ jego nazwa to Ekran powitalny , zakładam, że chcesz wyświetlić ekran przed uruchomieniem pliku HomeActivity. Dlatego powinieneś to zrobić i nie używać TabHostukładu;) :

// 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();
    }
}  

Mam nadzieję, że tego rodzaju wskazówki pomogą Ci osiągnąć to, czego chcesz.
Jeśli tak nie jest, daj mi znać, jak mogę Ci pomóc.

fllo
źródło
UżywamTabHost in layout_home.xml
Steve
A dlaczego nie masz nic w SplashScreenActivity? Ta aktywność wyświetla Twój TabHost?
fllo
Powtarzam, nie jestem pewien, ale powinieneś spróbować przynajmniej 1, 2 i 4. Mam nadzieję, że to pomoże!
fllo
pewnie, próbuję, wyniki opowiem później.
Steve
1
Twoja odpowiedź była dla mnie pomocna. Jesteś wspaniały. Zrobiłem wszystko, co powiedziałeś. w końcu utworzyłem i dodałem jedną metodę o nazwie blogSelected. Ten projekt jest powiązany z wyświetlaniem blogów. Myślę, że to mój błąd, że przegapiłem tę metodę. Jeśli nie zmienię nazwy pakietu, tak jak powiedziałeś, nie mogę uzyskać wyników. Twoja odpowiedź jest bardzo pomocna Dla mnie. Dziękuję miłego dnia.
Steve
4

Miałem ten sam błąd. Utworzenie nowego AVD z odpowiednim poziomem API rozwiązało mój problem.

aysenur
źródło
0

Napotkałem ten sam problem, ale kiedy zmieniłem skórę urządzenia AVD na HVGA, zadziałało.

Promień
źródło
-2

czy wywołałeś ViewTreeObserver i nie usunąłeś go.

    mEtEnterlive.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
         // do nothing here can cause such problem
    });
baiiu
źródło
-2

Miałem też ten problem, również działając na emulatorze. Ta sama wiadomość pojawiała się na Logcat, ale nie wpływała na funkcjonalność aplikacji. Ale to było denerwujące i nie lubię widzieć błędów w dzienniku, których nie rozumiem.

W każdym razie pozbyłem się komunikatu zwiększając pamięć RAM na emulatorze.

InquisitiveCrow
źródło