Удалить приложение Android Wear с реального устройства

Да, вы можете. Вам нужен специальный тег (если вы не можете найти его где-то еще). Я сделал это:

package something;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
import java.util.TreeMap;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.taglibs.standard.tag.el.core.ExpressionUtil;

/**
 * Get all class constants (statics) and place into Map so they can be accessed
 * from EL.
 * @author Tim.sabin
 */
public class ConstMapTag extends TagSupport {
    public static final long serialVersionUID = 0x2ed23c0f306L;

    private String path = "";
    private String var = "";

    public void setPath (String path) throws JspException {
        this.path = (String)ExpressionUtil.evalNotNull ("constMap", "path",
          path, String.class, this, pageContext);
    }

    public void setVar (String var) throws JspException {
        this.var = (String)ExpressionUtil.evalNotNull ("constMap", "var",
          var, String.class, this, pageContext);
    }

    public int doStartTag () throws JspException {
        // Use Reflection to look up the desired field.
        try {
            Class<?> clazz = null;
            try {
                clazz = Class.forName (path);
            } catch (ClassNotFoundException ex) {
                throw new JspException ("Class " + path + " not found.");
            }
            Field [] flds = clazz.getDeclaredFields ();
            // Go through all the fields, and put static ones in a Map.
            Map<String, Object> constMap = new TreeMap<String, Object> ();
            for (int i = 0; i < flds.length; i++) {
                // Check to see if this is public static final. If not, it's not a constant.
                int mods = flds [i].getModifiers ();
                if (!Modifier.isFinal (mods) || !Modifier.isStatic (mods) ||
                  !Modifier.isPublic (mods)) {
                    continue;
                }
                Object val = null;
                try {
                    val = flds [i].get (null);    // null for static fields.
                } catch (Exception ex) {
                    System.out.println ("Problem getting value of " + flds [i].getName ());
                    continue;
                }
                // flds [i].get () automatically wraps primitives.
                // Place the constant into the Map.
                constMap.put (flds [i].getName (), val);
            }
            // Export the Map as a Page variable.
            pageContext.setAttribute (var, constMap);
        } catch (Exception ex) {
            if (!(ex instanceof JspException)) {
                throw new JspException ("Could not process constants from class " + path);
            } else {
                throw (JspException)ex;
            }
        }
        return SKIP_BODY;
    }
}

, и тег называется:

<yourLib:constMap path="path.to.your.constantClass" var="consts" />

Все публичные статические конечные переменные будут помещены в карту, индексированную по их имени Java, поэтому если

public static final int MY_FIFTEEN = 15;

, то тег обернет это в Integer, и вы можете ссылаться на него в JSP:

<c:if test="${consts['MY_FIFTEEN'] eq 15}">

, и вам не нужно писать геттеры!

29
задан KevinTydlacka 10 July 2014 в 22:31
поделиться

6 ответов

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

adb uninstall [-k] <package> - remove this app package from the device
                               ('-k' means keep the data and cache directories)

Так, например:

adb uninstall com.example.testandroidwear

Как упоминали @WaynePiekarski и @ Thoast83, если Android Износное устройство подключается через Bluetooth вместо прямого USB-подключения (например, при тестировании на Moto 360), поэтому вам необходимо использовать adb -s <device> <command> в соответствии с инструкциями Направление команд на конкретный экземпляр эмулятора / устройства в документация adb .

В этом случае это может быть что-то вроде:

adb -s localhost:4444 uninstall com.example.testandroidwear

при условии, что вы установили соединение точно так, как описано в Отладка по Bluetooth (в противном случае измените номер порта соответственно) .

68
ответ дан matiash 10 July 2014 в 22:31
поделиться

Если кто-то отлаживает через Bluetooth и наткнулся на эту ветку, напишите:

adb -s localhost:4444 uninstall example.com.yourappname
18
ответ дан Thoast83 10 July 2014 в 22:31
поделиться

Когда вы устанавливаете APK через Play Store или через adb на телефон, встроенный носимый APK автоматически устанавливается на носимый.

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

Вы можете использовать устройства adb для обнаружения названий подключенных устройств, а затем adb -s, а затем имя устройства. Вы используете внутреннее имя пакета с командой удаления.

5
ответ дан worked 10 July 2014 в 22:31
поделиться

Я бы предложил использовать 127.0.0.1 вместо localhost

adb -s 127.0.0.1:4444 uninstall example.com.yourappname

0
ответ дан Vyacheslav 10 July 2014 в 22:31
поделиться

Сначала используйте «adb devices», чтобы найти все подключенные устройства:

$ C:\Program Files (x86)\Google\Cloud SDK>adb devices
List of devices attached
603KPSL029398   device
5c9cc2e0        device

Затем запустите программу удаления приложения, используя adb на нужном устройстве:

$ C:\Program Files (x86)\Google\Cloud SDK>adb -s 603KPSL029398 uninstall com.example.android.support.wearable.notifications
Success
3
ответ дан Lee Hounshell 10 July 2014 в 22:31
поделиться

Даже после удаления мои часы (moto360 второго поколения, под управлением Android Wear 1.5.03336103, Android OS 6.0.1) показывают удаленные приложения. Приложения были установлены прямо на устройстве износа от Studio.

-1
ответ дан Eli 10 July 2014 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: