Przejrzałem samouczek i zrobiłem dokładnie to, co powiedział. Przyznałem uprawnienia INTERNET,COARSE_LOCATION,FINE_LOCATION. Dodano plik jar w bibliotekach. To nie działa. Aplikacja ulega awarii w FlurryAgent.onStartSession(). Oto kod, którego używam, podany przez nich:

@Override
    protected void onStart() {
        super.onStart();
        FlurryAgent.onStartSession(MainActivity.this, MY_KEY);//MY_KEY is key given by them.
    }
    @Override
    protected void onStop() {
        super.onStop();
        FlurryAgent.onEndSession(this);
    }

Oto ślad stosu:

08-28 16:52:49.499: E/AndroidRuntime(18639): FATAL EXCEPTION: main
08-28 16:52:49.499: E/AndroidRuntime(18639): java.lang.NoClassDefFoundError: com.flurry.android.FlurryAgent
08-28 16:52:49.499: E/AndroidRuntime(18639):    at com.example.test.MainActivity.onStart(MainActivity.java:31)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1166)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.Activity.performStart(Activity.java:3842)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1719)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1765)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.ActivityThread.access$1500(ActivityThread.java:158)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:996)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.os.Handler.dispatchMessage(Handler.java:130)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.os.Looper.loop(SourceFile:351)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at android.app.ActivityThread.main(ActivityThread.java:3850)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at java.lang.reflect.Method.invokeNative(Native Method)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at java.lang.reflect.Method.invoke(Method.java:538)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
08-28 16:52:49.499: E/AndroidRuntime(18639):    at dalvik.system.NativeStart.main(Native Method)
1
Seshu Vinay 28 sierpień 2012, 15:24

2 odpowiedzi

Najlepsza odpowiedź

Oczywiście zawiesza się w czasie wykonywania, możesz sprawdzić, czy twój jar jest eksportowany podczas budowania apk: we właściwościach projektu > Ścieżka budowania Java, przejdź do folderu „Order and Export” i wypełnij pole wyboru odpowiadające twojemu jarowi. I odbuduj.

2
sdabet 28 sierpień 2012, 15:28

Cóż, oczywiście nie może znaleźć klasy com.flurry.android.FlurryAgent. Sprawdź, czy JAR zawiera taką klasę. Jeśli nie, to zły JAR. Jeśli tak, oznacza to, że plik JAR nie został poprawnie uwzględniony w ścieżce kompilacji.

Pamiętaj, że aby wykonać automatyczne dodawanie do ścieżki budowania, musisz dodać ją do katalogu libs/ (a nie lib/). IIRC zmieniło się to ostatnio wraz z aktualizacją Android SDK. W każdym razie sugeruję dodanie go ręcznie do ścieżki kompilacji, aby się upewnić.

Nie zapomnij wyczyścić i odbudować po zakończeniu.

3
m0skit0 28 sierpień 2012, 15:28