Я использую maven для моего проекта, и когда я делаю mvn clean install
и пытаюсь запустить программу, он выдает исключение. Итак, я очищаю проект и запускаю его снова, и он работает для меня.
Я использую eclipse IDE.
Для:
Класс не найден Исключение при запуске теста Junit
blockquote>Попробуйте запустить
mvn clean test
, как только он скомпилирует все тестовые классы (работал для меня).
logcat
нет поля имени пакета. Поэтому нет стандартного / встроенного способа фильтрации.
Хотя с Android 7.0 вы можете использовать опцию logcat --pid
в сочетании с командой pidof -s
для фильтрации вывода с помощью имени бинарного / пакета:
adb shell "logcat --pid=$(pidof -s <package_name>)"
Заменить "
на '
для Linux / MacOS
Вариант 1
Введите следующие строки:
adb shell
su
bash
PKG_PID_LIST_CACHE=$(eval $(pm list packages | cut -d ':' -f 2 | sed 's/^\(.*\)$/echo \"\$\(echo \1\) \$\(pidof \1\)\";/'))
PROC_PID_LIST_CACHE=$(ps -A -o NAME -o PID)
PID_LIST_CACHE=$(echo "$PKG_PID_LIST_CACHE\n$PROC_PID_LIST_CACHE")
function pid2pkg() { pkgName=$(echo "$PID_LIST_CACHE" | grep -w $1 | cut -d ' ' -f1 | head -1); if [ "$pkgName" != "" ] ; then echo $pkgName; else echo "*NOT RUNNING*"; fi }
eval "$(logcat -d | sed -r -e 's/([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+) +(.*)/\2 \$\(pid2pkg \3\) \5/g' | sed -r -e 's/(.+)/echo -e \"\1\"/g')"
Выход логарифма будет иметь следующий формат:
[Time] [Name] [Type] [Message]
Пример:
14:34:59.386 wpa_supplicant E wpa_supplicant: nl80211: Failed to set IPv4 unicast in multicast filter
14:35:02.231 com.android.phone D TelephonyProvider: subIdString = 1 subId = 1
14:35:03.469 android.hardware.wifi@1.0-service E WifiHAL : wifi_get_logger_supported_feature_set: Error -3 happened.
14:35:03.518 system_server I WifiService: getWifiApEnabledState uid=10086
14:35:03.519 dev.ukanth.ufirewall D AFWall : isWifiApEnabled is false
14:35:03.520 system_server I GnssLocationProvider: WakeLock released by handleMessage(UPDATE_NETWORK_STATE, 0, 123)
14:35:03.522 dev.ukanth.ufirewall I AFWall : Now assuming wifi connection
Некоторые системные процессы не имеют пакетов. system_server
и wpa_supplicant
, например. Если имя пакета не может быть найдено, вместо него будет отображаться имя процесса.
Предостережения:
Если процесс, стоящий за определенным PID, больше не работает, вы не можете получить имя пакета / процесса.
После того, как процесс вышел из системы или ваше устройство перезапустилось, PID можно фактически назначить для совершенно разных процессов.
Таким образом, вы можете проверить, как долго процесс действительно запущен :
ps -e -o pid -o stime -o name
Вариант 2
Если вы хотите, чтобы форматирование было более читаемым, вы можете скопировать мой сценарий ведения журнала на свое устройство и выполнить его:
better_logging.sh
PKG_PID_LIST_CACHE=$(eval $(pm list packages | cut -d ':' -f 2 | sed 's/^\(.*\)$/echo \"\$\(echo \1\) \$\(pidof \1\)\";/'))
PROC_PID_LIST_CACHE=$(ps -A -o NAME -o PID)
PID_LIST_CACHE=$(echo "$PKG_PID_LIST_CACHE\n$PROC_PID_LIST_CACHE")
MAX_LEN=$(echo "$PID_LIST_CACHE" | cut -d ' ' -f1 | awk '{ if ( length > L ) { L=length} }END{ print L}')
function pid2pkg() {
pkgName=$(echo "$PID_LIST_CACHE" | grep -w $1 | cut -d ' ' -f1 | head -1);
if [ "$pkgName" != "" ] ; then
printf "%-${MAX_LEN}s" "$pkgName";
else
printf "%-${MAX_LEN}s" "<UNKNOWN (NOT RUNNING)>";
fi
}
eval "$(\
logcat -d | \
sed -r -e 's/([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+) +(.*)/\2\ $\(pid2pkg \3\) \5/g' | \
sed -r -e 's/(.+)/echo -e \"\1\"/g' \
)" | \
awk '
function color(c,s) {
printf("\033[%dm%s\033[0m\n",90+c,s)
}
/ E / {color(1,$0);next}
/ D / {color(2,$0);next}
/ W / {color(3,$0);next}
/ I / {color(4,$0);next}
{print}
'
Чтобы скопировать и запустить его, вы можете использовать:
adb push better_logging.sh /sdcard/better_logging.sh
adb shell "bash /sdcard/better_logging.sh"
Выход будет выглядеть следующим образом:
Это мой сценарий. Немного ржавый, но все еще работает.
PID=`adb shell ps | grep -i <your package name> | cut -c10-15`;
adb logcat | grep $PID
На самом деле у меня есть скрипт python для добавления большего количества цветов, а цикл while - для отслеживания этого процесса, когда он перезапускается, но я думаю, вы получите точка.
$ adb -d shell logcat --pid=6693 Unrecognized Option - Usage: logcat [options] [filterspecs]
... похоже, что--pid
не является допустимым вариантом. – Jules 25 June 2017 в 14:45logcat --pid
была представлена в Нуге – Alex P. 25 June 2017 в 15:01