java Android 应用程序,“找不到源”调试错误 - 尝试下载 Android 源代码
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3597209/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android App, "source not found" debug error - tried downloading Android Source Code
提问by CuddleBunny
I'm getting an error in my Android app that says "source not found" and crashes the program. I've already read a number of posts saying that the solution is to download the android source code and load that up in Eclipse, but I tried to no avail.
我在我的 Android 应用程序中收到一条错误消息,显示“找不到源”并使程序崩溃。我已经阅读了许多帖子,说解决方案是下载 android 源代码并将其加载到 Eclipse 中,但我尝试无济于事。
Here is a bunch of information that may help with my problem, let me know if you need more!
这里有一堆信息可能有助于解决我的问题,如果您需要更多信息,请告诉我!
Stack:
堆:
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThrea d$ActivityRecord, Intent) line: 2663
ActivityThread.handleLaunchActivity(ActivityThread $ActivityRecord, Intent) line: 2679
ActivityThread.access00(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]
Is it weird that the first entry is 'ActivityThrea d' with the 'd' cut off? If this is the problem, what went wrong and how do I fix it?
第一个条目是 'ActivityThrea d','d' 被切断,这很奇怪吗?如果这是问题,出了什么问题,我该如何解决?
The line of code the debug stops on:
调试停止的代码行:
public void AddAnimationID(String index, Integer view)
{
animations.put(index, view);
}
'animations' is a Dictionary and is a member of class Alien. I am calling it like:
'animations' 是一个字典,是 Alien 类的成员。我这样称呼它:
Alien alien;
alien.AddAnimationID("idle", R.drawable.idle);
I am correct in thinking that R.drawable.idle is an int right? findViewByID takes an int for the argument...
我认为 R.drawable.idle 是一个 int 是正确的吗?findViewByID 使用 int 作为参数...
Here is the logcat, I tried to pinpoint where in the log it started the application, sorry if its too much.
这是 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/data@[email protected]@classes.dex
-> /data/dalvik-cache/data@[email protected]@classes.dex
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/data@[email protected]@classes.de
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.access00(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!
Here is the class Alien:
这是外星人类:
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);
}
}
}
Here is the onCreate function that this is called from and related information:
这是调用它的 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");
}
}
I am using Eclipse on Windows 7 x64. I have all of the newest updates to the android SDK and I downloaded the android source code and added it to the Eclipse patch because previous posts led me to try that. The code breaks for debug when the first time AddAnimationID is called. I hope this is all you need, thanks! Sorry if I'm doing this wrong by the way, I'm somewhat new at this.
我在 Windows 7 x64 上使用 Eclipse。我拥有 android SDK 的所有最新更新,我下载了 android 源代码并将其添加到 Eclipse 补丁中,因为之前的帖子让我尝试这样做。第一次调用 AddAnimationID 时,代码会中断以进行调试。我希望这就是你所需要的,谢谢!对不起,如果我做错了,我对此有点陌生。
Edit: Looks like I didn't have enough breakpoints, the culprit is not the AddAnimationID function but actually the SetImageView one. The if statement seems to not work, so I've commented it out for now. I'll post back once I've figured it out. It's probably something silly that works in another language but not Java...
编辑:看起来我没有足够的断点,罪魁祸首不是 AddAnimationID 函数,而是 SetImageView 函数。if 语句似乎不起作用,因此我暂时将其注释掉。一旦我想通了,我会回帖。用另一种语言而不是 Java 工作可能很愚蠢......
回答by CuddleBunny
The problem ended up being the Dictionary class, I got it to vaguely work by throwing in a bunch of try/catch blocks, but that wasn't what I wanted, so I replaced it with a Map and it works fine.
问题最终出在 Dictionary 类上,我通过放入一堆 try/catch 块让它模糊地工作,但这不是我想要的,所以我用 Map 替换了它,它工作正常。
To append some useful information I've found since then to this answer, as a decent number of people have visited this page: Eclipse will say "Source not found" for nearly every random error you make in your app. Here are some steps to follow in order to locate these troublesome lines of code:
将我从那时起找到的一些有用信息附加到这个答案中,因为相当多的人访问了这个页面:Eclipse 会为您在应用程序中犯的几乎每个随机错误说“找不到源”。为了找到这些麻烦的代码行,需要遵循以下一些步骤:
1) Step through your code line-by-line (using step filters to ignore code that you did not write) until you find the offending line, this is most likely where you made your mistake. If the error is deep in the code, place a break point close to, but not after, where you feel the issue occurs and step from there.
1) 逐行执行代码(使用步进过滤器忽略您未编写的代码),直到找到有问题的行,这很可能是您犯错的地方。如果错误在代码深处,请将断点放置在您认为出现问题的地方附近,而不是之后,然后从那里开始。
2) Uncaught exceptions and other useful information can sometimes be found in the Variables panel.
2) 有时可以在“变量”面板中找到未捕获的异常和其他有用信息。
3) "Source Not Found" just means the line of code that generated the exception is in a binary file. It does exist, Eclipse just can't show it to you.
3)“未找到源”仅表示生成异常的代码行在二进制文件中。它确实存在,只是 Eclipse 无法向您展示。
回答by Mohammad Zendedel
I had the same problem in my project that has reference to a library project. The cause of problem was an activity that existed in library project and I forgot mention it in my project manifest.xmlfile.
我在我的项目中遇到了同样的问题,它引用了一个库项目。问题的原因是图书馆项目中存在的一项活动,我忘了在我的项目manifest.xml文件中提到它。

