Je reçois une erreur Couldn't load memtrack module (No such file or directory) failed to load memtrack module: -2
au moment de l'exécution.
Erreur 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
manifeste:
<?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>
Sortie:
Enfin, il affiche l'écran vide.
Quelqu'un sait comment résoudre ces erreurs?
Comme vous pouvez le lire sur cette question est liée aux commentaires ci-dessus , cette erreur a pour résultat:
"[...] un problème avec le chargement de {certains} modules matériels. Cela pourrait être lié au support du GPU, à la gestion de la carte SD, à peu près tout."
L'étape 1 ci-dessous devrait résoudre ce problème. Aussi, comme je peux le voir, vous avez des noms de paquets étranges dans votre manifeste:
<manifest>
,<application>
<activity>
Comme vous le savez, ces éléments n'empêchent pas l'affichage de votre application. Mais je pense:
le
Couldn't load memtrack module error
peut se produire en raison de problèmes de configuration des émulateurs et, comme votre projet contient de nombreux problèmes d'organisation, il peut être utile de procéder à une nouvelle conception.
Pour mieux utiliser et avec peu de choses, cela peut être résolu en suivant ces conseils:
Et même un vrai appareil! L'erreur memtrack module
semble liée à votre émulateur. Alors changez le en Run configuration
, n'oubliez pas de changer le API
aussi.
Pour les erreurs OpenGl
, comme called unimplemented OpenGL ES API
, ce n'est pas une erreur mais une déclaration! Vous devez l'activer dans votre manifeste (vous pouvez lire cette réponse si vous utilisez GLSurfaceView dans HomeActivity.Java
, cela pourrait vous aider):
<uses-feature Android:glEsVersion="0x00020000"></uses-feature>
// or
<uses-feature Android:glEsVersion="0x00010001" Android:required="true" />
Ne déclarez pas de noms de paquet différents pour toutes les balises dans Manifest
. Vous devriez avoir la même chose pour Manifest
, Activities
, etc. Quelque chose comme cela semble correct:
<!-- 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>
Vous devez définir une autre présentation pour SplashScreenActivity.Java
parce que vous n'utilisez pas le paramètre TabHost
pour l'écran de démarrage et qu'il ne s'agit pas d'un moyen de ressource sûr. Déclarez une mise en page spécifique avec quelque chose de différent, comme le nom de l'application et le 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" />
Évitez d’utiliser une mise en page dans des activités qui ne l’utilisent pas.
Enfin, je ne comprends pas clairement le but de votre SplashScreenActivity
. Il définit une vue du contenu et se termine directement. C'est inutile.
Comme son nom est Écran de démarrage , je suppose que vous souhaitez afficher un écran avant de lancer votre HomeActivity
. Par conséquent, vous devriez faire ceci et ne pas utiliser la mise en page TabHost
;) :
// 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();
}
}
J'espère que ce genre de conseils vous aidera à réaliser ce que vous voulez.
Si ce n’est pas le cas, faites-moi savoir comment je peux vous aider.
J'ai eu la même erreur. La création d'un nouveau DAV avec le niveau d'API approprié a résolu mon problème.
J'ai rencontré le même problème mais quand j'ai changé la peau du périphérique AVD en HVGA, cela a fonctionné.