Как я могу преодолеть ограничение длины ресурса "adb shell setprop",

Я получаю сообщение об ошибке при попытке установить значение для свойства с именем >= 32 символа

adb shell setprop 01234567890123456789012345678901 VALUE

Ошибка:

could not set property

Это прекрасно работает

adb shell setprop 0123456789012345678901234567890 VALUE
adb shell getprop 0123456789012345678901234567890
VALUE

Есть ли способ установить свойства с более длинными именами?

Ответ 1

Похоже, что этого ограничения не будет. Я вижу те же правила в источниках javascript для Android.

public class SystemProperties
{
    public static final int PROP_NAME_MAX = 31;
    public static final int PROP_VALUE_MAX = 91;

    ...
}

Ответ 2

У меня также была такая же проблема. поскольку упомянутый выше ответ невозможен, используйте ИМЯ, которое превышает 31. поэтому я меняю имя пакета на более короткое, чем 31, и теперь он работает.

Ответ 3

Возможно использование перенаправления?

Задайте небольшое свойство, которое будет содержать имя файла для файла conf:

setprop confFileName "myConf.yml"

в этом файле conf есть все ваши большие имена и значения свойств.

Ответ 4

Обновление: в Android O был удален предел имени системного свойства в 32 символа. Теперь вы можете иметь более длинные имена.

public class SystemProperties {
    /**
     * Android O removed the property name length limit, but com.amazon.kindle 7.8.1.5
     * uses reflection to read this whenever text is selected (http://b/36095274).
     */
    public static final int PROP_NAME_MAX = Integer.MAX_VALUE;
    public static final int PROP_VALUE_MAX = 91;
    ...
}