ClassNotFoundException во время тестового инструмента для Android

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

У меня есть проект и проектный тест. Мой манифест проекта:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.toto.app" android:versionCode="3" android:versionName="0.3.1"> ... <application android:icon="@drawable/icon" android:label="@string/app_name"> ... </application> </manifest> 

И мой тестовый проект проявляется:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.toto.app.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <instrumentation android:targetPackage="com.toto.app" android:name="android.test.InstrumentationTestRunner" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> </application> </manifest> ? <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.toto.app.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <instrumentation android:targetPackage="com.toto.app" android:name="android.test.InstrumentationTestRunner" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="android.test.runner" /> </application> </manifest> 

Вот активность, которую я хочу проверить: src / com / toto / app / activity / ListActivity, у меня есть LaunchActivity (объявленная как начальная активность в манифесте), которые запускают эту активность.

И в тесте мой ListActivityTest находится на одном пути (src / com / toto / app / activity). Я также пробовал использовать src / com / toto / app / test. Источник:

 public class ListActivityTest extends ActivityInstrumentationTestCase2<LaunchActivity>{ private Solo solo; public ListActivityTest() { super(LaunchActivity.class); } public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); solo.wait(2000); } } 

Кажется, что LaunchActivity найден, но когда он запускает ListActivity, у меня есть ошибка:

% Adb shell am instrument -w com.toto.app.test / android.test.InstrumentationTestRunner

Com.toto.app.activity.ListActivityTest: INSTRUMENTATION_RESULT: shortMsg = java.lang.ClassNotFoundException INSTRUMENTATION_RESULT: longMsg = java.lang.ClassNotFoundException: com.toto.app.activity.ListActivity в загрузчике dalvik.system.PathClassLoader [/ system / framework /android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-2.apk]

Я не понимаю, почему один класс найден, а другой нет … В Eclipse он не работает точно так же. Я попытался использовать непосредственно ListActivity в тестовом файле, но такую ​​же ошибку. Как он создает этот apk, чтобы избежать некоторого класса?


Это полный стек при использовании adb.

Полный стек в logcat eclipse:

 java.lang.NoClassDefFoundError: com.toto.app.activity.ListActivity at com.toto.app.activity.LaunchActivity.onCreate(LaunchActivity.java:19) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851) at android.app.ActivityThread.access$1500(ActivityThread.java:132) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:143) at android.app.ActivityThread.main(ActivityThread.java:4293) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: com.toto.app.activity.ListActivity in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.toto.app.test-2.apk:/data/app/com.toto.app-1.apk] at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) at java.lang.ClassLoader.loadClass(ClassLoader.java:551) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) ... 14 more 

Это связано с тем, что моя деятельность расширяет функцию FragmentActivity, а не просто Activity.

Чтобы решить эту проблему, мне пришлось экспортировать android-support-v4.jar в основной проект.

Надеюсь, что это поможет другим …

Экспортная банка

Intereting Posts
SDK Местоположение не найдено в андроид-студии Загрузка параметров и изображений через HttpURLConnection на сервер PHP (Android) Веб-просмотр Android: Внесите локальный файл Javascript на удаленную веб-страницу Почему мой фрагмент onCreate вызывается широко, когда я просматриваю свои приложения viewPager? Файлы android .so не извлекаются в / data / data / <package> / lib Контактные маяки: непоследовательные и ненадежные результаты при определении расстояния маяка Что такое «панель» в Android-окне? Поддержка Emoji для iOS и Android Как получить все выбранные элементы списка, используя флажок Нужна IDE для разработки Android NDK + SDK Отображать неопределенный индикатор прогресса в строке состояния на Android Как у вас есть пауза кода в течение нескольких секунд в андроиде? RetyclerView ItemDecoration Spacing и Span Android studio v0.3.2, gradle, google maps v2.0 Не нашел класс «com.google.android.gms.maps.MapFragment Ошибка: дублировать файлы во время упаковки APK Android Studio Error