Domanda run-as Il pacchetto 'a.b.c' è sconosciuto - Galaxy S4 Jellybean o Android 4.3


Non riesco a eseguire run-as (o ndk-gdb) per il Galaxy S4 con Jellybean 4.2.2.

~  $ adb shell
shell@android:/ $ run-as a.b.c ls
run-as: Package 'a.b.c' is unknown

Esistono più risposte per questo problema per i dispositivi pre-ICS, ma sembra che siano stati corretti in ICS.

Aggiornamento - Agosto 2013: Dopo essere apparso inizialmente su Galaxy S4 con Jellybean 4.2.2, il problema di run-as sembra essere su tutti i dispositivi 4.3. Guarda questo Bug di Android.

Vedi il problema Android riconosciuto Qui.

Aggiornamento - Nov 2013: Google ha pubblicato il cerotti quella correzione run-as in Android 4.4.


30
2018-06-20 17:21


origine


risposte:


Trovato successo aggiungendo questo all'attività:

private void startGdbServer() {   
    try {
        new ProcessBuilder()
        .command(getFilesDir().getParent() + "/lib/gdbserver", "tcp:5039", "--attach" ,"" + android.os.Process.myPid())
        .redirectErrorStream(true)
        .start();
    } catch (IOException e) {
        Log.e(TAG, "IOException failed to start gdbserver");
    }
}

Quindi ho avvitato startGdbServer in un servizio Android e ho aggiornato lo script ndk-gdb per avviare il server invece del comando run-as.

Ecco l'aggiunta evidente:

<service android:enabled="true" android:name="com.apportable.activity.GdbServerService"
    android:label="@string/app_name" android:icon="@drawable/icon">
    <intent-filter >
        <action android:name="apportable.FoundationTests.GdbServerService" />
    </intent-filter>
</service>

Ecco le modifiche rilevanti di ndk-gdb (in python):

    remote_gdbserver = '/data/data/' + env['APPLICATION_IDENTIFIER'] + '/lib/gdbserver'

    print "Attaching to pid " + pid
    # Android 4.2 requires the --user 0 option. Earlier versions cannot have it

    results = env.Execute([env['ADB'], 'shell', 'am'])
    if "--user" in results:
        user_option = "--user 0"
    else:
        user_option = ""

    adb.AsyncShell(env, 'am startservice ' + user_option + ' -a ' + env['APPLICATION_IDENTIFIER'] + '.GdbServerService --es gdbserver_name ' + remote_gdbserver + ' --ei gdbserver_port ' + str(env['ANDROID_REMOTE_DEBUG_PORT']))

    # HACK: magic number. ensure the gdb server is actually up and running
    time.sleep(2)  # 1 is usually enough, but not always, like after reboot or with heavy system load

    adb.Forward(env, env['ANDROID_LOCAL_DEBUG_PORT'], env['ANDROID_REMOTE_DEBUG_PORT'])

    adb.Pull(env, process_path, '/system/bin/app_process')

    setup_path = '"' + setup_path + '"'

    if env['CGDB'] is not None:
        cmd = [env['CGDB'], '-d', env['GDB'], '--', '-x', setup_path]
    else:
        cmd = [env['GDB'], '-x', setup_path]

    env.RunCommand(cmd)

12
2018-06-21 16:53



Una cosa che ha finito per sistemare il mio Nexus 7 da questo, è l'installazione di diversi driver ADB. Ho anche re-flashato il dispositivo (anche se non sono sicuro che sia stato effettivamente risolto). Come accennato in un'altra risposta (la mia) era che sarebbe stato necessario fare il tifo - quando in realtà non è stato d'aiuto nemmeno nel mio caso.


0
2017-08-05 12:27



Nel mio caso si trattava di un problema dell'app principale:

shell@android:/ $ run-as com.android.phone transfer_bugreport ls
run-as: Package 'com.android.phone' is unknown

Pacchetto che ha in AndroidManifest.xml in <maninfest> etichetta coreApp="true" sono esclusi da /data/system/packages.list e quindi davvero sconosciuto per run-as.


0
2017-10-15 14:23



C'è un problema noto con l'ultima versione di Nexus 7. È sufficiente effettuare il downgrade a 4.2 (o ottenere 4.3 senza il mini-aggiornamento) e si dovrebbe andare bene. C'è una discussione qui a riguardo:

http://code.google.com/p/android/issues/detail?id=58373


-1
2017-10-02 23:53