Не удается запустить приложение из Android Studio после обновления устройства с Android 8 до 9 - PullRequest
4 голосов
/ 02 июля 2019

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

Я работаю над приложением для Android и после обновления версии Android для моего устройства до 9 я больше не могу запускать свое приложение из Android Studio.

Я вижу две разные ошибки в журнале событий:

Первое (и самое короткое):

Сессия 'app': установка не удалась. Установка не удалась

Попробовал все по следующей ссылке, не повезло:

Ошибка сеанса 'app' при установке APK

Второй:

Сломанная труба java.io.IOException: Сломанная труба в sun.nio.ch.FileDispatcherImpl.write0 (собственный метод) в sun.nio.ch.SocketDispatcher.write (SocketDispatcher.java:47) в sun.nio.ch.IOUtil.writeFromNativeBuffer (IOUtil.java:93) в sun.nio.ch.IOUtil.write (IOUtil.java:65) в sun.nio.ch.SocketChannelImpl.write (SocketChannelImpl.java:471) в com.android.ddmlib.AdbHelper.executeRemoteCommand (AdbHelper.java:524) в com.android.ddmlib.AdbHelper.executeRemoteCommand (AdbHelper.java:627) в com.android.ddmlib.SplitApkInstaller.uploadApk (SplitApkInstaller.java:133) в com.android.ddmlib.SplitApkInstaller.install (SplitApkInstaller.java:73) на com.android.ddmlib.Device.installPackages (Device.java:927) на com.android.tools.deployer.AdbClient.install (AdbClient.java:75) в com.android.tools.deployer.ApkInstaller.install (ApkInstaller.java:32) на com.android.tools.deployer.Deployer.install (Deployer.java:76) на com.android.tools.idea.run.tasks.DeployTask.perform (DeployTask.java:79) в com.android.tools.idea.run.tasks.AbstractDeployTask.perform (AbstractDeployTask.java:109) в com.android.tools.idea.run.LaunchTaskRunner.run (LaunchTaskRunner.java:132) в com.intellij.openapi.progress.impl.CoreProgressManager $ TaskRunnable.run (CoreProgressManager.java:727) в com.intellij.openapi.progress.impl.CoreProgressManager.lambda $ runProcess $ 2 (CoreProgressManager.java:164) в com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun (CoreProgressManager.java:582) в com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress (CoreProgressManager.java:532) в com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress (ProgressManagerImpl.java:87) в com.intellij.openapi.progress.impl.CoreProgressManager.runProcess (CoreProgressManager.java:151) в com.intellij.openapi.progress.impl.CoreProgressManager $ 4.run (CoreProgressManager.java:403) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) at java.lang.Thread.run (Thread.java:745)

Мое устройство - Huawei P20, и я работаю с последней версией Android Studio 3.4.1 с Ubuntu, и запуск приложения (запуск) из Android Studio перестал работать после обновления Android 8 до 9.

В качестве примечания могу добавить, что процесс сборки работает нормально и устройство обнаружено правильно при запуске (на первом экране, где вы выбираете целевое устройство), и я также вижу устройство, подключенное в logcat зритель, но при завершении строительства, когда вы готовы к развертыванию, вы слышите звук компьютера при подключении / отключении USB-устройства

.

Любая помощь?

Редактировать 1:

Я думал, что это в конечном итоге проблема с ОС (Ubuntu), потому что восстановил недавнюю резервную копию моей виртуальной машины, и она работала нормально, но после обновления Android Studio и SDK (как было предложено) он снова начал давать сбой, поэтому он должен Я полагаю, что это будет что-то связанное между ОС моего устройства Android 9 и последними обновлениями SDK.

В «сбойном» vm я могу запустить приложение на старом телефоне Android 4 и на моем планшете Asus 4.4.3, а не на моем новом Android 9, и поэтому я предположил, что это может быть связано с Android 9 выпуск.

Это мой AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.xxx.xxx"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

    <application
        android:name=".activities.shared.AppSettings"
        android:allowBackup="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@style/Theme.myTheme.TitleBar">
        <service
            android:name=".activities.shared.OnClearFromRecentService"
            android:stopWithTask="false"
            android:enabled="true"
            android:exported="true">
        </service>

        <provider
            android:name=".activities.shared.GenericFileProvider"
            android:authorities="${applicationId}.testMe.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

        <activity
            android:name=".activities.launch.SplashActivity"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:name=".activities.main.MainActivity"
            android:configChanges="orientation"
            android:parentActivityName=".activities.launch.SplashActivity">
        </activity>
        <activity
            android:name=".activities.about.AboutUsActivity"
            android:parentActivityName=".activities.main.MainActivity">
        </activity>
        <activity
            android:name=".activities.about.ChangeLogActivity"
            android:parentActivityName=".activities.about.AboutUsActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.xxx.xxx.activities.about.AboutUsActivity"/>
        </activity>
        <activity
            android:name=".activities.about.ReportProblemActivity"
            android:parentActivityName=".activities.about.AboutUsActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.xxx.xxx.activities.about.AboutUsActivity"/>
        </activity>
        <activity
            android:name=".activities.main.HowToUseActivity"
            android:parentActivityName=".activities.main.MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.xxx.xxx.activities.main.MainActivity"/>
        </activity>
        <activity
            android:name=".activities.DisplayThoughtActivity"
            android:parentActivityName=".activities.main.MainActivity">
        </activity>
        <activity
            android:name=".activities.shared.SettingsActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="Settings">
        </activity>

        <receiver android:name=".helpers.notification.AlarmTakeTestReceiver"/>
    </application>

</manifest>

Это мой файл build.gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 28
    buildToolsVersion '29.0.0'
    def code
    Properties versionProps = new Properties()
    def versionPropsFile = file('version.properties')
    if (versionPropsFile.exists())
        versionProps.load(new FileInputStream(versionPropsFile))
    code = (versionProps['VERSION_CODE'] ?: "0").toInteger() + 1
    versionProps['VERSION_CODE'] = code.toString()
    versionProps.store(versionPropsFile.newWriter(), null)
    packagingOptions {
        pickFirst 'META-INF/LICENSE.txt' // picks the JavaMail license file
    }
    defaultConfig {
        applicationId 'com.xxx.xxx'
        minSdkVersion 17
        targetSdkVersion 28
        versionCode code
        versionName "1.0." + code
        multiDexEnabled true
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    project.ext { appName = 'xxx' }
                    def newName = 'xxx.apk'
                    outputFileName = new File("./build/", newName)
                    //def newName = output.outputFile.name //output.packageApplication.outputFile
                    //newName = newName.replace("app-", "$project.ext.appName-")
                    //newName = newName.replace("-release", "")
                }
            }
        }
        debug {
        }
    }
    allprojects {
        repositories {
            jcenter()
            mavenCentral()
            def androidHome = System.getenv("ANDROID_HOME")
            maven {
                url "$androidHome/extras/android/m2repository/"
            }
            maven {
                url "https://maven.java.net/content/groups/public/"
            }
        }
    }
    productFlavors {
    }
}

dependencies {
    //Google Guava
    api 'com.google.guava:guava:28.0-android'
    //writingminds
    api 'com.writingminds:FFmpegAndroid:0.3.2'
    //JavaCV video
    api group: 'org.bytedeco', name: 'javacv', version: '1.5'
    //api group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '4.1-1.4.4', classifier: 'android-arm'
    //api group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '4.0.1-1.4.4', classifier: 'android-arm'
    //volley
    api 'com.android.volley:volley:1.1.1'
    //spotify
    api 'com.github.kaaes:spotify-web-api-android:0.4.1'
    //mail API 19
    //api 'com.sun.mail:android-mail:1.6.3'
    //api 'com.sun.mail:android-activation:1.6.3'
    //mail API 16
    api 'com.sun.mail:android-mail:1.5.6'
    api 'com.sun.mail:android-activation:1.5.6'
    //apache commons lang
    api 'org.apache.commons:commons-lang3:3.8.1'
    //Font Selector List Preference
    api 'com.vanniktech:vntfontlistpreference:1.0.0'
    //Rate my app
    api 'com.github.hotchemi:android-rate:1.0.1'
    //Support
    api 'com.android.support:appcompat-v7:28.0.0'
    api 'com.android.support:support-v4:28.0.0'
    /*api 'com.android.support:support-v4:28.0.0'
    api 'com.android.support:appcompat-v7:28.0.0'
    api 'com.android.support:cardview-v7:28.0.0'
    api 'com.android.support:recyclerview-v7:28.0.0'
    api 'com.android.support:customtabs:28.0.0'
    api 'com.android.support:support-annotations:28.0.0'*/
    //multidex
    api 'com.android.support:multidex:1.0.3'
    //AlertDialog
    implementation 'com.github.d-max:spots-dialog:1.1@aar'
    //glide animated gifs
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

Редактировать 2:

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

Установка не удалась с сообщением 'cmd package install-create -r -t -S 11182369 «возвращает ошибку» Неизвестная ошибка: исключение безопасности: Отказ в разрешении: команда runInstallCreate from pm просит запустить как пользователь -1, но звонит от пользователя 0; это требует android.permission.INTERACT_ACROSS_USERS_FULL java.lang.SecurityException: отказ в разрешении: runInstallCreate from Команда pm просит работать как пользователь -1, но вызывает пользователя 0; этот требуется android.permission.INTERACT_ACROSS_USERS_FULL в com.android.server.am.UserController.handleIncomingUser (UserController.java:1827) в com.android.server.am.ActivityManagerService.handleIncomingUser (ActivityManagerService.java:25069) в android.app.ActivityManager.handleIncomingUser (ActivityManager.java:4848) в com.android.server.pm.PackageManagerShellCommand.translateUserId (PackageManagerShellCommand.java:2402) в com.android.server.pm.PackageManagerShellCommand.doCreateSession (PackageManagerShellCommand.java:2408) в com.android.server.pm.PackageManagerShellCommand.runInstallCreate (PackageManagerShellCommand.java:949)

1 Ответ

2 голосов
/ 02 июля 2019

Это странная проблема, которая обсуждалась несколько раз на SO, особенно это касается устройств, недавно обновленных Android 9.

Вы пытались отключить, а затем снова включить параметры разработчика? (А может быть, перезапустить устройство?) Кажется, это исправило некоторые проблемы.

Если это не сработает, вы можете посмотреть на них и перейти оттуда -

Android Pie - 9 (API 28): установка APK .... установка не удалась

Отказ в разрешении: startActivity запрашивает запуск от имени пользователя -2, но вызывает пользователя 0; для этого требуется android.permission.INTERACT_ACROSS_USERS_FULL

...