jak uruchomić działanie konkretnej aplikacji za pośrednictwem terminala?
13
Muszę uruchomić moją aplikację na Androida ze zdalnego komputera przez SSH, ale nie jestem ekspertem od linii poleceń, więc chciałbym wiedzieć: jak uruchomić określone działanie aplikacji? (nie tylko otwórz) Co implikuje: jak WIEDZIEĆ dokładny sintax możliwych działań aplikacji?
np .: Chcę uruchomić aplikację do nagrywania dźwięku na telefonie z komputera ORAZ rozpocząć nagrywanie ze zdalnego. Czy to możliwe?
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Aby kontrolować aplikację, musisz wprowadzić poprawne wartości <package_name>i <full_class_name>do polecenia. Na przykład możesz użyć com.google.gmail/com.google.gmail.check_mail(hipotetyczne nazwy) jako ostatniej części polecenia.
Wielu programistów aplikacji zachowuje prywatność informacji o klasie.
Nie wszyscy programiści wykonują inteligentne programowanie modułowe. Dobrym nawykiem jest dzielenie aplikacji na wiele klas, które mogą być wywoływane przez zamiary, ale nie wszyscy programiści są inteligentni.
Rozwiązanie pierwszego problemu: dekompiluj aplikację za pomocą apktool i zobacz wszystkie informacje. Istnieją również inne sposoby, ale ta jest zawsze działającą metodą (chyba że aplikacja jest oparta na NDK zamiast SDK).
Rozwiązanie drugiego problemu: Nic.
Nie martw się, większość popularnych aplikacji jest zgodna z najlepszymi praktykami programistycznymi i zapewniają Public APIod nich informacje o zajęciach.
Czy możesz dodać wyjaśnienie parametrów <package_name>i <full_class_name>, i jak je uzyskać? Dla mnie przynajmniej to drugie nie jest jasne.
Izzy
@Izyzy Dodano wyjaśnienie ... Jeszcze raz przejrzyj odpowiedź.
Android Quesito,
Dzięki! +1 ode mnie: D Kompaktowy i łatwy do zrozumienia. Dołożę swobodę dodawania linków, jeśli nie masz nic przeciwko, ponieważ apktools(w przeciwnym razie deweloperzy mogliby pomyśleć, że to część zestawu SDK i zgubili się;)
Izzy
@Izzy Oto mój problem: Nie mogę uruchomić tej działalności ustawień aplikacji: com.android.settings/.Settings$StorageSettingsActivity. Spróbuj sam. Właściwie, co to za ciąg znaków po $znaku? Czy to jest jak podklasa w ustawieniach?
Gokul NC
@GokulNC może być konieczne zacytowanie całej rzeczy (pojedyncze cudzysłowy), lub $StorageSettingsActivitymoże być postrzegane jako zmienna i „rozwinięta” do pustego łańcucha (chyba że istnieje zmienna zdefiniowana pod tą nazwą).
Izzy
9
Jak powiedział Sachin Shekhar, musisz użyć następującego polecenia:
am start -a android.intent.action.MAIN -n <package_name>/<full_class_name>
Zobacz konkretny przykład:
pobieranie pliku apk z urządzenia z Androidem lub z dowolnego miejsca na rynku
<package_name>
i<full_class_name>
, i jak je uzyskać? Dla mnie przynajmniej to drugie nie jest jasne.apktools
(w przeciwnym razie deweloperzy mogliby pomyśleć, że to część zestawu SDK i zgubili się;)com.android.settings/.Settings$StorageSettingsActivity
. Spróbuj sam. Właściwie, co to za ciąg znaków po$
znaku? Czy to jest jak podklasa w ustawieniach?$StorageSettingsActivity
może być postrzegane jako zmienna i „rozwinięta” do pustego łańcucha (chyba że istnieje zmienna zdefiniowana pod tą nazwą).Jak powiedział Sachin Shekhar, musisz użyć następującego polecenia:
Zobacz konkretny przykład:
aapt dump xmltree com.android.settings*.apk AndroidManifest.xml
Chciałbym uruchomić menu „Tethering”, więc szukam działania w danych wyjściowych:
Ostatnim poleceniem jest:
aapt
Komenda jest częścią Android SDKźródło
com.android.settings
, dlatego powiedziałem, że jest względna. Przetestuj to w dowolnej aplikacji.