Удалить приложение (.apk) в эмуляторе? - PullRequest
2 голосов
/ 23 февраля 2011

Мне известны два способа удаления разрабатываемого приложения из эмулятора:

  1. Использование эмулятора GUI: Настройки> Приложения> Управление приложениями> Uninstall
  2. Использование ADB: удаление adb

Возможно, я открыл третий способ, используя 'adb shell':

rm /data/app/<package>.apk

Однако, похоже, что это не очень хороший способ удаления приложений, поскольку с ним может быть связана дополнительная информация (регистрация?).

Что это за информация и где ее можно найти?

Ответы [ 5 ]

4 голосов
/ 06 марта 2011

Интересно, вы упомянули об этом. Я провел быстрый домашний тест, чтобы пролить свет на ваш вопрос.

Как правило, когда вы устанавливаете файл .apk, Android создает для него внутреннюю область хранения, расположенную в / data / data / <имя пакета запуска процесса>. Это в основном используется как внутренняя область кэширования, к которой не могут получить доступ другие приложения или пользователь телефона. Вы можете прочитать об этом чуть более подробно в главе Внутреннее хранилище раздела хранения данных Android. Это область, используемая исключительно вашим приложением, и вы можете писать личные данные там.

После теоретического удаления приложения эта внутренняя область хранения также удаляется. Первые 2 способа, которые вы описали, действительно делают это: файл .apk в / data / app / удаляется так же, как и внутренняя область хранения в /data/data/.

Однако, если вы использовали оболочку adb и запустили команду rm, все, что удалено, это файл .apk в / data / app /. Внутренняя область хранения в / data / data / не удаляется. Таким образом, по сути вы правы, что дополнительная информация с приложением не обязательно удаляется. Но, с другой стороны, если вы переустановите приложение после выполнения команды, то существующая внутренняя область хранения будет перезаписана при установке новой копии.

2 голосов
/ 19 июля 2013

adb uninstall com.example.test

com.example.test может отличаться в зависимости от вашего приложения.

2 голосов
/ 23 октября 2011

У меня тоже были проблемы с этим.У меня есть Link2SD на моем телефоне, но раздел ext4 на моей SD-карте поврежден, поэтому я переформатировал, но все связанные файлы все еще были в папке / data / app.Поэтому я создал скрипт для удаления всех неработающих ссылок и столкнулся с той же проблемой, что и вы, менеджер приложений сказал, что они все еще установлены!поэтому я сделал еще один скрипт, чтобы исправить это, используя программу pm на вашем телефоне.

Вот мой код для удаления неработающих ссылок из папки приложения:

fixln.sh

#!/system/bin/sh
#follow and fix symlinks

appfolder="/data/app/"
files=`ls ${appfolder}*`
fix=$1
badstring="No such file or directory"
for i in $files
do
    if [ -h $i ]
    then
        if [ -a `readlink $i` ]
        then
            echo -e "\e[32m$i is good\033[0m";
        else
            if [ $fix == "fix" ]
            then
                `rm $i`
                echo -e "\e[31m$i is bad, and was removed\033[0m";
            else
                echo -e "\e[31m$i is bad\033[0m";
            if
        fi
    else
        echo -e "\e[36m$i is not a symlink\033[0m";
    fi
done

и вот мой код для удаления приложений без apk:

fixmissing.sh

#!/system/bin/sh
#searches through a list of installed apps, and removes the ones that have no apk file

appfolder="/data/app/"
fix=$1

installed=`pm list packages -f -u`

for i in $installed
do
    usefull=${i#*:}
    filename=${usefull%=*}
    package=${usefull#*=}

    if [ -a $filename ]
    then
        echo -e "\e[32m$package ($filename) is good\033[0m"
    else
        if [ "$fix" == "fix" ]
        then
            uninstall=`pm uninstall $package`
            if [ "$uninstall" == "Success" ]
            then
                echo -e "\e[31m$package ($filename) is bad, and was removed\033[0m"
            else
                echo -e "\e[31m$package ($filename) is bad, and COULD NOT BE REMOVED\033[0m"
            fi
        else
            echo -e "\e[31m$package ($filename) is bad\033[0m"
        fi
    fi
done

скопируйте эти файлы на телефон и запустите их без аргументов, чтобы увидеть, что они находят, или добавьте исправление в конец (fixmissing.sh fix), чтобы они исправили то, что нашли.Запускайте на свой страх и риск и делайте резервные копии своих файлов.Я не несу ответственности, если этот код каким-либо образом испортит что-либо.

Если кто-то хочет обновить / объединить эти сценарии вместе, это нормально.они были сделаны, чтобы решить мою проблему, и они сделали это, просто подумали, что я поделюсь ими.

1 голос
/ 26 февраля 2011

Я считаю, что любые файлы, созданные приложением на SD-карте, не будут удалены.

0 голосов
/ 07 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...