No se pudo cargar el error Logcat del módulo memtrack
Recibo un error Couldn't load memtrack module (No such file or directory) failed to load memtrack module: -2
en tiempo de ejecución.
Error de seguimiento de pila:
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
Manifiesto:
<?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();
}
}
diseño_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>
Producción:
Finalmente muestra la pantalla en blanco.
¿Alguien sabe cómo solucionar estos errores?
Este error, como puede leer en la pregunta vinculada en los comentarios anteriores , resulta ser:
"[...] un problema con la carga de {algunos} módulos de hardware. Esto podría tener algo que ver con la compatibilidad con GPU, el manejo de tarjetas SD, básicamente cualquier cosa".
El paso 1 a continuación debería resolver este problema. Además, como puedo ver, tienes algunos nombres de paquetes extraños dentro de tu manifiesto:
- paquete="com.example.hive" en
<manifest>
la etiqueta, - android:nombre="com.sit.gems.app.GemsApplication" para
<application>
- y android:name="com.sit.gems.activity" en
<activity>
Como sabes, estas cosas no impiden que se muestre tu aplicación. Pero yo pienso:
Esto
Couldn't load memtrack module error
podría ocurrir debido a problemas de configuración de los emuladores y, debido a que su proyecto contiene muchos problemas de organización, podría ser útil realizar un nuevo rediseño.
Para un mejor uso y con pocas cosas, esto se puede solucionar siguiendo estos consejos:
1. Prueba con otro emulador...
¡E incluso un dispositivo real! El memtrack module
error parece estar relacionado con tu emulador. Así que cámbialo por Run configuration
, no olvides cambiarlo API
también.
2. Registros de errores de OpenGL
Para OpenGl
errores, como called unimplemented OpenGL ES API
, ¡no es un error sino una declaración! Debes habilitarlo en tu manifiesto (puedes leer esta respuesta si estás usando GLSurfaceView en el interior HomeActivity.java
, podría ayudarte):
<uses-feature android:glEsVersion="0x00020000"></uses-feature>
// or
<uses-feature android:glEsVersion="0x00010001" android:required="true" />
3. Utilice el mismo paquete
No declares nombres de paquetes diferentes para todas las etiquetas en Manifest
. Deberías tener lo mismo para Manifest
, Activities
, etc. Algo como esto se ve bien:
<!-- 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. No te pierdas con los diseños:
Deberías configurar otro diseño SplashScreenActivity.java
porque no estás usando la TabHost
pantalla de inicio y esta no es una forma segura de utilizar recursos. Declara un diseño específico con algo diferente, como el nombre de la aplicación y el logotipo:
// 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" />
Evite utilizar un diseño en actividades que no lo utilicen.
5. ¿Pantalla de bienvenida?
Finalmente, no entiendo claramente el propósito de su SplashScreenActivity
. Establece una vista de contenido y finaliza directamente. Esto es inútil.
Como su nombre es Pantalla de bienvenida , supongo que desea mostrar una pantalla antes de iniciar su archivo HomeActivity
. Por lo tanto, debes hacer esto y no usar el TabHost
diseño ;) :
// 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();
}
}
Espero que este tipo de consejos te ayuden a lograr lo que deseas.
Si no es el caso, déjame saber cómo puedo ayudarte.
Yo tenía el mismo error. Crear un nuevo AVD con el nivel de API apropiado resolvió mi problema.