2011-09-29 8 views
7

저는 안드로이드 OS를 조금 실험 해본 결과 System.getenv()을 호출하여 환경 변수를 얻으려고했습니다. 예 : $PATH에 대한,하지만 난 이런 식으로 액세스 할 수있는 자신의 변수를 정의 할 수 없었다 ... 그것은 가능합니까?안드로이드가 Java 환경 변수를 설정합니다.

내가 설정하려고하고 shell 사용자로 ADB 쉘에서 export 변수했지만 작동하지 않는 한 - 내가 전화 메뉴에서 응용 프로그램을 시작하거나 상관없이 만약 내가 ADB 쉘 am 명령을 사용하는 경우.

Runtime.getRuntime().exec() 도울 수 있습니까? 휴대 전화에 root 접속하면 도움이 될까요?

감사

+0

[Os.getenv()] (http://developer.android.com/reference/android/system/Os.html#getenv (자바. lang.String)) 및 [Os.setenv()] (http://developer.android.com/reference/android/system/Os.html#setenv) – Paschalis

답변

7

환경 변수는 변수를 설정 한 후 시작 변수, 그리고 자식 프로세스를 설정하는 과정에서만 볼 수 있습니다. adb 쉘에서 환경 변수를 설정할 때 안드로이드 애플리케이션을 시작하는 프로세스의 부모 프로세스에 있지 않으므로 애플리케이션은 설정 한 변수를 볼 수 없습니다.

Java (및 Android)에는 System.setenv()이 없지만 자신의 프로그램에 대한 환경 변수를 설정해야 할 경우 항상 더 좋은 방법이 있습니다. 그러한 방법 중 하나는 setting and getting Properties입니다.

Java에서 환경 변수를 설정하는 것은 실제로 불가능합니다. (그렇지만 실제로하고 싶지는 않습니다.) 다른 프로세스가 읽어야하는 변수를 설정하려면 ProcessBuilder을 사용할 수 있지만 프로세스가 Java/Android 프로그램에서 실행되는 경우입니다.

해결하려는 문제와 환경 변수를 사용하지 않고 수행 할 수있는 문제에 대해 생각해보십시오. 그들은 Java에 적합하지 않으며 Android에서도 더욱 악화됩니다.

+1

환경 변수는 피해야하지만 합법적이라고합시다. 환경 변수를 설정해야하는 이유 (예를 들어, 네이티브 라이브러리에 의존하는 경우). Java에서는 가능하지만 예제를 제공하지 않는다면 대답을 업데이트 할 수 있습니까? –

4

은 Android 응용 프로그램에서 환경 변수를 설정할 수 있습니다. 그러나 @richq가 말했듯이, 이러한 변수는 환경 변수 (및 응용 프로그램에서 사용하는 JNI 라이브러리)를 설정 한 응용 프로그램에서 시작된 프로세스에서만 볼 수 있습니다. 안드로이드 응용 프로그램에서 환경 변수 설정에 대한이 게시물을 참조 : https://stackoverflow.com/a/22315463/927592

관련 문제