我在我的Android應用程序中發現錯誤,指出「找不到源」並崩潰了程序。我已經閱讀了一些帖子,說解決方案是下載android源代碼並在Eclipse中加載,但我試圖無濟於事。Android應用程序,「未找到源」調試錯誤 - 已嘗試下載Android源代碼
這裏有一堆信息可能有助於我的問題,讓我知道如果您需要更多!
堆棧:
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThrea d$ActivityRecord, Intent) line: 2663
ActivityThread.handleLaunchActivity(ActivityThread $ActivityRecord, Intent) line: 2679
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125
ActivityThread$H.handleMessage(Message) line: 2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]
是很奇怪的是,第一項是 'ActivityThrea d' 與 'd' 切斷?如果這是問題,出了什麼問題,我該如何解決?
的代碼行調試停止上:
public void AddAnimationID(String index, Integer view)
{
animations.put(index, view);
}
「動畫」是一個字典,是類外來的成員。我稱它爲:
Alien alien;
alien.AddAnimationID("idle", R.drawable.idle);
我正確地認爲R.drawable.idle是一個int right? findViewByID需要一個int參數...
這裏是logcat,我試圖找出它在啓動應用程序的日誌中的位置,對不起,如果它太多了。
I/ActivityManager( 59): Displayed activity com.android.launcher/com.android.la
uncher2.Launcher: 21357 ms (total 21357 ms)
I/Launcher.Model( 118): not binding apps: no Launcher activity
D/dalvikvm( 118): GC_EXPLICIT freed 5222 objects/297520 bytes in 114ms
D/dalvikvm( 118): GC_EXPLICIT freed 11360 objects/562112 bytes in 94ms
D/PackageParser( 59): Scanning package: /data/app/vmdl45576.tmp
I/PackageParser( 59): Game.Main: compat added android.permission.WRITE_EXTERNA
L_STORAGE android.permission.READ_PHONE_STATE
I/PackageManager( 59): Removing non-system package:Game.Main
I/ActivityManager( 59): Force stopping package Game.Main uid=10032
D/dalvikvm( 118): GC_EXTERNAL_ALLOC freed 319 objects/18064 bytes in 73ms
D/dalvikvm( 59): GC_FOR_MALLOC freed 6857 objects/349752 bytes in 400ms
D/PackageManager( 59): Scanning package Game.Main
I/PackageManager( 59): Package Game.Main codePath changed from /data/app/Game.
Main-2.apk to /data/app/Game.Main-1.apk; Retaining data and using new
I/PackageManager( 59): /data/app/Game.Main-1.apk changed; unpacking
D/installd( 34): DexInv: --- BEGIN '/data/app/Game.Main-1.apk' ---
I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=Game.Main/.Main }
D/dalvikvm( 258): DexOpt: load 116ms, verify 200ms, opt 2ms
D/installd( 34): DexInv: --- END '/data/app/Game.Main-1.apk' (success) ---
W/PackageManager( 59): Code path for pkg : Game.Main changing from /data/app/G
ame.Main-2.apk to /data/app/Game.Main-1.apk
W/PackageManager( 59): Resource path for pkg : Game.Main changing from /data/a
pp/Game.Main-2.apk to /data/app/Game.Main-1.apk
D/PackageManager( 59): Activities: Game.Main.Main
I/ActivityManager( 59): Force stopping package Game.Main uid=10032
E/Launcher( 118): Unable to launch. tag=ApplicationInfo(title=Alien Game) inten
t=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=Game.Main/.Main }
E/Launcher( 118): android.content.ActivityNotFoundException: Unable to find exp
licit activity class {Game.Main/Game.Main.Main}; have you declared this activity
in your AndroidManifest.xml?
E/Launcher( 118): at android.app.Instrumentation.checkStartActivityResult(
Instrumentation.java:1404)
E/Launcher( 118): at android.app.Instrumentation.execStartActivity(Instrum
entation.java:1378)
E/Launcher( 118): at android.app.Activity.startActivityForResult(Activity.
java:2817)
E/Launcher( 118): at com.android.launcher2.Launcher.startActivityForResult
(Launcher.java:1053)
E/Launcher( 118): at android.app.Activity.startActivity(Activity.java:2923
)
E/Launcher( 118): at com.android.launcher2.Launcher.startActivitySafely(La
uncher.java:1462)
E/Launcher( 118): at com.android.launcher2.AllApps2D.onItemClick(AllApps2D
.java:178)
E/Launcher( 118): at android.widget.AdapterView.performItemClick(AdapterVi
ew.java:284)
E/Launcher( 118): at android.widget.AbsListView$PerformClick.run(AbsListVi
ew.java:1696)
E/Launcher( 118): at android.os.Handler.handleCallback(Handler.java:587)
E/Launcher( 118): at android.os.Handler.dispatchMessage(Handler.java:92)
E/Launcher( 118): at android.os.Looper.loop(Looper.java:123)
E/Launcher( 118): at android.app.ActivityThread.main(ActivityThread.java:4
627)
E/Launcher( 118): at java.lang.reflect.Method.invokeNative(Native Method)
E/Launcher( 118): at java.lang.reflect.Method.invoke(Method.java:521)
E/Launcher( 118): at com.android.internal.os.ZygoteInit$MethodAndArgsCalle
r.run(ZygoteInit.java:868)
E/Launcher( 118): at com.android.internal.os.ZygoteInit.main(ZygoteInit.ja
va:626)
E/Launcher( 118): at dalvik.system.NativeStart.main(Native Method)
I/installd( 34): move /data/dalvik-cache/[email protected]@[email protected]
-> /data/dalvik-cache/[email protected]@[email protected]
D/PackageManager( 59): New package installed in /data/app/Game.Main-1.apk
I/ActivityManager( 59): Force stopping package Game.Main uid=10032
I/ActivityManager( 59): Start proc com.svox.pico for broadcast com.svox.pico/.
VoiceDataInstallerReceiver: pid=259 uid=10028 gids={}
D/dalvikvm( 157): GC_EXPLICIT freed 4079 objects/247824 bytes in 605ms
D/dalvikvm( 59): GC_EXPLICIT freed 6136 objects/382312 bytes in 493ms
W/RecognitionManagerService( 59): no available voice recognition services foun
d
I/installd( 34): unlink /data/dalvik-cache/[email protected]@[email protected]
x
D/AndroidRuntime( 191): Shutting down VM
D/jdwp ( 191): adbd disconnected
I/AndroidRuntime( 191): NOTE: attach of thread 'Binder Thread #3' failed
I/ActivityThread( 259): Publishing provider com.svox.pico.providers.SettingsPro
vider: com.svox.pico.providers.SettingsProvider
D/AndroidRuntime( 269):
D/AndroidRuntime( 269): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 269): CheckJNI is ON
D/AndroidRuntime( 269): --- registering native functions ---
I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=Game.Main/.Main }
I/ActivityManager( 59): Start proc Game.Main for activity Game.Main/.Main: pid
=273 uid=10032 gids={1015}
I/ARMAssembler( 59): generated scanline__00000077:03545404_00000004_00000000 [
47 ipp] (67 ins) at [0x322b68:0x322c74] in 4370882 ns
W/Game.Main.Main( 273): SIS is null
D/AndroidRuntime( 273): Shutting down VM
W/dalvikvm( 273): threadid=1: thread exiting with uncaught exception (group=0x4
001d800)
E/AndroidRuntime( 273): FATAL EXCEPTION: main
E/AndroidRuntime( 273): java.lang.RuntimeException: Unable to start activity Co
mponentInfo{Game.Main/Game.Main.Main}: java.lang.NullPointerException
E/AndroidRuntime( 273): at android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:2663)
E/AndroidRuntime( 273): at android.app.ActivityThread.handleLaunchActivi
ty(ActivityThread.java:2679)
E/AndroidRuntime( 273): at android.app.ActivityThread.access$2300(Activi
tyThread.java:125)
E/AndroidRuntime( 273): at android.app.ActivityThread$H.handleMessage(Ac
tivityThread.java:2033)
E/AndroidRuntime( 273): at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime( 273): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 273): at android.app.ActivityThread.main(ActivityThrea
d.java:4627)
E/AndroidRuntime( 273): at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 273): at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 273): at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 273): at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:626)
E/AndroidRuntime( 273): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 273): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 273): at Game.Main.Main.onCreate(Main.java:81)
E/AndroidRuntime( 273): at android.app.Instrumentation.callActivityOnCre
ate(Instrumentation.java:1047)
E/AndroidRuntime( 273): at android.app.ActivityThread.performLaunchActiv
ity(ActivityThread.java:2627)
E/AndroidRuntime( 273): ... 11 more
W/ActivityManager( 59): Force finishing activity Game.Main/.Main
I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=Game.Main/.Main }
D/AndroidRuntime( 269): Shutting down VM
D/jdwp ( 269): adbd disconnected
I/AndroidRuntime( 269): NOTE: attach of thread 'Binder Thread #3' failed
W/ActivityManager( 59): Activity pause timeout for HistoryRecord{43ed84f8 Game
.Main/.Main}
I/ARMAssembler( 59): generated scanline__00000077:03515104_00000000_00000000 [
33 ipp] (47 ins) at [0x305640:0x3056fc] in 1148283 ns
W/ActivityManager( 59): Launch timeout has expired, giving up wake lock!
這裏是類異形:
package Game.Main;
import java.util.Dictionary;
import android.graphics.drawable.AnimationDrawable;
import android.widget.ImageView;
public class Alien
{
private AlienState state;
private Dictionary<String, Integer> animations;
private ImageView imageView;
public Alien()
{
}
public void AddAnimationID(String index, Integer view)
{
animations.put(index, view);
}
public Integer GetAnimationID(String index)
{
return animations.get(index);
}
public void SetImageView(ImageView view)
{
imageView = view;
if(animations.get("idle") != null)
{
imageView.setBackgroundResource(R.drawable.idle);
state = AlienState.idle;
}
}
public ImageView GetImageView()
{
return imageView;
}
public void ChangeView(String index)
{
if(animations.get(index) != null)
{
imageView.setBackgroundResource(animations.get(index));
state = AlienState.valueOf(index);
}
}
}
這裏是的onCreate功能,這是從和相關信息被稱爲:
package Game.Main;
import java.util.ArrayList;
import java.util.List;
import Game.Main.MainView.MainThread;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class Main extends Activity implements OnClickListener {
private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
private ArrayList<String> dictionary;
private TextView txtText;
private MainThread thread;
private MainView view;
private AnimationDrawable anim;
private Alien alien;
@Override // called when Main is created.
public void onCreate(Bundle savedInstanceState) {
// reload from previous instance
super.onCreate(savedInstanceState);
// set default content view
setContentView(R.layout.main);
view = (MainView)findViewById(R.id.mainView);
thread = view.GetThread();
if (savedInstanceState == null) {
// we were just launched: set up a new game
thread.SetState(GameState.Active);
Log.w(this.getClass().getName(), "SIS is null");
} else {
// we are being restored: resume a previous game
thread.RestoreState(savedInstanceState);
Log.w(this.getClass().getName(), "SIS is nonnull");
}
// setup speak button
Button speakButton = (Button)findViewById(R.id.btn_speak);
// setup text box
txtText = (TextView)findViewById(R.id.txt_text);
// setup our dictionary
dictionary = new ArrayList<String>();
dictionary.add("sit");
dictionary.add("eat");
dictionary.add("jump");
dictionary.add("think");
alien.AddAnimationID("idle", R.drawable.idle);
alien.AddAnimationID("eat", R.drawable.eat);
alien.AddAnimationID("jump", R.drawable.jump);
alien.AddAnimationID("think", R.drawable.think);
alien.AddAnimationID("run", R.drawable.run);
alien.AddAnimationID("sit", R.drawable.sit);
alien.SetImageView((ImageView)findViewById(R.id.alien_image));
// check to see if a recognition activity is present
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
// if activities were found, cancel speech recognition
if (activities.size() != 0)
speakButton.setOnClickListener(this);
else
{
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}
}
我使用Eclipse在Windows 7 64位系統。我擁有所有android SDK的最新更新,並且我下載了android源代碼並將其添加到了Eclipse補丁中,因爲之前的帖子讓我嘗試了這一點。當第一次調用AddAnimationID時,代碼會中斷以進行調試。我希望這是你需要的一切,謝謝!對不起,如果我順便做錯了,我在這方面有點新鮮。
編輯:看起來我沒有足夠的斷點,罪魁禍首不是AddAnimationID函數,但實際上是SetImageView之一。 if語句似乎不起作用,所以我現在已經評論了它。一旦我找到答案,我會回覆。這可能是愚蠢的東西在另一種語言,但不是Java的作品...
我們需要更多的代碼。你在eclipse中寫這個嗎?發佈您的logcat – Falmarri 2010-08-30 01:53:31