Android не может установить мое приложение, перенесенное с Eclipse на Android Studio, на мой тестовый телефон, Pixel XL

Я поддерживаю приложение для компании-друга несколько лет. Когда они недавно обновились с Android 5 до Android 7, приложение перестало работать. Поэтому я портировал на Android Studio и начал исправление. Теперь, после раздавливания кучи ошибок, я не могу установить приложение для установки на свой тестовый телефон, который является Pixel XL под управлением Android 8. Он запускал отладочные изображения, пока я не удалил его, чтобы я мог протестировать установку. (Я думаю, это было из-за Instant Run.)

Теперь я получаю следующее:

$ adb install-multiple -r -t I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_0.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_1.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_7.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_4.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_5.apk I:\Users\...\app\build\intermediates\split-apk\debug\dep\dependencies.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_6.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_3.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_8.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_2.apk I:\Users\...\app\build\intermediates\split-apk\debug\slices\slice_9.apk I:\Users\...\app\build\outputs\apk\debug\app-debug.apk 
Split APKs installed

$ adb shell am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
    Error while executing: am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
    Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pbs.deliverytrack1/.MainActivity }
    Error type 3
    Error: Activity class {com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity} does not exist.

    Error while Launching activity

Выполняется ли com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity?

ДОПОЛНИТЕЛЬНЫЕ ПРИМЕЧАНИЯ: Я смог получить apk для установки по электронной почте на Samsung Edge 7.0 под управлением Nougat 7.0. Я все еще не могу установить его на свой Google Pixel XL, на котором работает Oreo 8.0.

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

$ adb shell am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Error while executing: am start -n "com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pbs.deliverytrack1/.MainActivity }
Error type 3
Error: Activity class {com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity} does not exist.

В разделе, где говорится: cmp = com.pbs.deliverytrack1/.MainActivity, должно быть com.pbs.deliverytrack1/com.pbs.deliverytrack1.MainActivity?

UPDATE После беспорядка с minSDK, maxSDK и targetSDK, а также трех разных версий Android: 7.0, 7.1.1 и 8.0, я нашел способ продолжить работу. Мой клиент использует 7.0 и 7.1.1, поэтому я создал эмулятор под управлением 7.0, который я использовал для отладки моего приложения. (На самом деле, моя жена). Поэтому я снова продвигаюсь вперед.

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

Спасибо всем за помощь и предложения. Я оставлю это открытым для немного, чтобы увидеть, если кто-то придумает чудо. Я бы предпочел присудить награду, чем просто позволить ей войти в бит-ведро.:)

Итак, еще раз, я смиренно прошу о помощи. Спасибо, Ray

Ответ 1

Как CommonsWare, упомянутый в комментарии, похоже, что ваше приложение установлено, его просто невозможно запустить. Я могу подумать о двух вещах, которые нужно проверить:

  • Убедитесь, что в вашем файле AndroidManifest.xml указано правильное полное имя класса MainActivity. Если это неверно, ваше приложение будет установлено, но оно будет сбой при запуске и жаловаться на невозможность найти ваш MainActivity.
  • Если вы используете ProGuard, проверьте, чтобы ваши правила были настроены так, чтобы ProGuard не удалял класс MainActivity из вашего APK. Многие разработчики только ProGuard их не-отладочные сборки, и вы упомянули, что ваши отладочные сборки работают нормально, так что это может быть намек.
  • EDIT: Я могу думать о другом. Если вы изменяете applicationId в debug buildType, то вам нужно указать тот же идентификатор в вашей команде adb am start.

Ответ 2

Если ничего не работает, попробуйте просто создать новый проект в Android Studio со всей необходимой информацией (например, такое же имя пакета, совместимость с устройствами Android) при создании первого действия, скопировать весь контент в вашей Java и Файлы макета XML из старого проекта. Создайте другое действие (например, если в проекте Eclipse был DrawerActivity, создайте еще одну DrawerActivity в Android Studio. Это, надеюсь, может работать.

Я не уверен, что это сработает, но это более простой вариант. Во-первых, скопируйте все из старой папки проекта Resources, скопируйте все файлы Java в новый проект, и поскольку необходимо определить Activities, скопируйте AndroidManifest.xml в новое приложение.

Надеюсь, это поможет!

Ответ 3

Теперь есть много изменений в Android, а также в Android-8, Android-7.1 и Android-7

Таким образом, в этом случае есть много новых вещей, если вы используете фоновый сервис, чем добавлять дополнительные Job scheduling для Android 7,7.1,8

Изменение поведения Нуги

Изменение поведения Oreo

Обновление встроенных средств Android SDK 27.0.1

Приложение "Изменить модуль" Gradle файл

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.example.package"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

Поддержка эмулятора

Обновите Sdk Android-7,7.1,8. для создания локального эмулятора Меню файла → Настройка → Внешний вид и поведение → Настройка системы → Android Sdk

Ответ 4

Могу я предложить следующие пункты: 1) Как уже было сказано в некоторых из приведенных выше замечаний, я надеюсь, что вы уже отключили "Instant Run" (Откройте диалог "Настройки" или "Настройки". Перейдите к сборке, выполнению, развертыванию > "Мгновенный запуск" и "Отмените проверку" рядом с "Включить мгновенное" Бег) 2) В AS перейдите в File- > invalidate cache и перезапустите 3) Попробуйте выполнить Gradle Очистить и затем скомпилировать (уровень приложения, с правой стороны Gradle Параметры меню)

& можете ли вы рассказать, какую версию Android Studio сейчас используете?