Как установить переменную окружения в Android? - PullRequest
0 голосов
/ 05 марта 2020

Я работаю над проектом, в котором использую ОС Android для разработки приложения для киосков для розничных магазинов. Для моей цели мне нужно иметь возможность установить переменную среды на устройстве Android, которая:

  1. не зависит от какого-либо приложения;
  2. Постоянна во всех приложениях и перезагрузках системы .

Бонус: если бы я мог установить переменную из adb, это было бы еще лучше.

Удивительно, но это доказало быть более трудным, чем ожидалось.

  1. SharedPreferences не сокращает счет, поскольку переменная зависит от приложения, которое ее создало.
  2. Os.setenv устанавливает переменную, которая Удаляется, как только приложение закрывается или перезапускается.
  3. adb shell export, кажется, не имеет никакого эффекта.

Кто-нибудь занимался этой проблемой?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вы можете использовать ContentProvider, если хотите предоставить данные другим Android приложениям, используя Android framework / способом Android. Кроме того, если у вас есть доступ root и вы предпочитаете adb, вы можете использовать setprop и getprop:

$ adb shell setprop my.random.prop ok
$ adb shell getprop my.random.prop //outputs "ok"

Если у вас есть доступ к источнику Android, вы можете добавить команда init.rc, которая запускает это при загрузке. Или вы можете создать файл в таком месте, как data/local?

Редактировать: Аллен указал в комментариях, что добавление persist к свойству (то есть persist.device.id) позволяет пережить перезагрузки.

0 голосов
/ 05 марта 2020

сделать это для установки с помощью android studio на уровень приложения build.gradle

вставить файл значений в src/main/res/raw папку

task copySecretKey(type: Copy) {
    def File secretKey = file "$System.env.YOUR_VARIABLE"
    from secretKey.getParent()
    include secretKey.getName()
    into 'src/main/res/raw'
    rename secretKey.getName(), "VALUE_OF_VARIABLE_FROM_RAW_FILE" // in my case it is credential.json
}
preBuild.dependsOn(copySecretKey)
...