Android-приложение, ошибка «источник не найден» - попытался загрузить исходный код Android

1

Я получаю сообщение об ошибке в своем приложении для Android, в котором говорится, что "источник не найден", и сбой программы. Я уже прочитал несколько сообщений, в которых говорится, что решение заключается в загрузке исходного кода и загрузке Android в Eclipse, но я попытался безрезультатно.

Вот куча информации, которая может помочь с моей проблемой, сообщите мне, если вам нужно больше!

Stack

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;
alien.AddAnimationID("idle", R.drawable.idle);

Я правильно понял, что R.drawable.idle - int int? 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/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.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!

Вот класс 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);
        }
    }
}

Вот функция 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 x64. У меня есть все новейшие обновления для Android SDK, и я загрузил исходный код Android и добавил его в патч Eclipse, потому что предыдущие сообщения побудили меня попробовать это. Код разрывается для отладки при первом вызове AddAnimationID. Надеюсь, это все, что вам нужно, спасибо! Извините, если я делаю это неправильно, кстати, я немного новичок в этом.

Изменить: похоже, у меня недостаточно точек останова, виновником не является функция AddAnimationID, а на самом деле SetImageView. Утверждение if, похоже, не работает, поэтому я уже прокомментировал это. Я отправлю сообщение после того, как выясню это. Возможно, что-то глупое работает на другом языке, но не на Java...

  • 0
    Нам нужно больше кода. Вы пишете это в затмении? Опубликуйте свой логкат
Теги:

2 ответа

12
Лучший ответ

Проблема закончилась тем, что была классом Dictionary, я получил ее смутно работать, бросив кучу блоков try/catch, но это было не то, что я хотел, поэтому я заменил ее на карту, и она отлично работает.

Чтобы добавить некоторую полезную информацию, которую я нашел с этого момента, этот достойный человек посетил эту страницу: Eclipse скажет "Источник не найден" почти для каждой случайной ошибки, которую вы делаете в своем приложении. Ниже приведены некоторые шаги для поиска этих проблемных строк кода:

1) Пройдите через свой код по строкам (используя фильтры шагов, чтобы игнорировать код, который вы не пишете), пока не найдете строку нарушения, это скорее всего, когда вы допустили свою ошибку. Если ошибка глубока в коде, поместите точку останова близко к ней, но не после нее, где вы чувствуете, что проблема возникает, и шаг оттуда.

2) Неиспользованные исключения и другая полезная информация иногда можно найти на панели "Переменные".

3) "Источник не найден" означает, что строка кода, генерирующая исключение, находится в двоичном файле. Он существует, Eclipse просто не может показать его вам.

  • 0
    герой для этой информации, особенно для окна с изменяемым окном - хорошие советы для таких noobs-андроидов, как я +1
  • 0
    Я так рад, что нашел ваш пост; действительно хорошие советы
0

У меня была такая же проблема в моем проекте, что и ссылка на проект библиотеки. Причиной проблемы была деятельность, которая существовала в проекте библиотеки, и я забыл упомянуть об этом в файле проекта manifest.xml.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню