2010-08-30 45 views
1

我在我的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的作品...

+0

我們需要更多的代碼。你在eclipse中寫這個嗎?發佈您的logcat – Falmarri 2010-08-30 01:53:31

回答

12

該問題最終成爲Dictionary類,我通過投擲一堆try/catch塊模糊地工作,但那不是我想要什麼,所以我用一個地圖替換它,它工作正常。

爲了追加一些自那時以來發現的有用信息到這個答案,有相當數量的人訪問過這個頁面:Eclipse會針對您在應用中發生的幾乎每一個隨機錯誤說出「未找到源」。下面是一些步驟,以便找到這些麻煩的代碼行:

1)逐行掃描您的代碼(使用步驟篩選器忽略您未寫入的代碼),直到找到違規行,這很可能是你犯了錯誤的地方。如果代碼中的錯誤很深,請在您覺得問題出現的地方放置一個臨近點,但不要在此之後,並且從那裏開始步。

2)未捕獲的異常和其他有用信息有時可以在變量面板中找到。

3)「未找到源」意味着生成異常的代碼行位於二進制文件中。它確實存在,Eclipse只是無法展示給你。

+0

英雄這一點的信息,特別是varialbles窗口提示 - 像我這樣的android noobs的好提示+1 – jcvandan 2011-09-10 14:31:38

+0

我很高興我找到了你的文章;確實很好的提示 – nevero 2012-05-08 17:11:24

0

我在我的項目中引用了一個庫項目時遇到了同樣的問題。問題的原因是圖書館項目中存在的活動,我忘記了在我的項目manifest.xml文件中提及它。