Android Studio를 OSX(내 경우에는 Yosemite 나 El Capitan 버젼) 에 설치하다 보면 발생하는 에러가 다음과 같다.



종종 발생하는데 해결하는 방법은 쉽다.

$ export STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk
$ open /Applications/Android\ Studio.app

위에서 xx 는 자신의 버젼에 맞게 쓰여져야 한다. 참고로 내꺼는 25 ("jdk1.7.0_25.jdk")이다. 안전하게 .bash_profile 에 STUDIO_JDK 값을 지정해주는 것이 좋다.


parseSdkContent failed

Could not initialize class android.graphics.Typeface


정확히는 위와같이 발생합니다. 그래서 다른 프로젝트를 가져와서 막상 실행시킬려고 하면 에러가 발생하는데 OSX  에서는 $HOME/.android 폴더를 강제로 지워주고 다시 시작하니까 문제 없이 동작합니다. 



기존 계정에서 실행하는 것은 문제가 없는데 , 네트워크 상에서 (즉 WorkGroup 으로 묶인 계정으로) 로그인 해서 사용할려고 실행할 때 발생하는 에러를 해결하는 방법 입니다.

   
  Debugger entered--Lisp error: (error "The directory ~/.emacs.d/server is unsafe")
     signal(error ("The directory ~/.emacs.d/server is unsafe"))
     error("The directory %s is unsafe" "~/.emacs.d/server")
     server-ensure-safe-dir("~\\.emacs.d\\server\\")
     server-start(nil)
     call-interactively(server-start t nil)
     execute-extended-command(nil)
     call-interactively(execute-extended-command nil nil)


대충 이런 식으로 에러가 발생합니다. 붉은색 으로 표시된 디렉토리 이름은 상황에 따라 다르게 나옵니다. 제 경우에는 위와는 살짝 다르게 "C:\Users\sdssss\AppData\Roaming\.emacs.d\server" 이런식으로 표시 됐습니다.

이유는 간단합니다. 붉은색 으로 표시되는 디렉토리의 소유자 (Owner)가 다르기 때문입니다. 소유자를 바꿔주던가 하는 식으로 해결하는 방법도 있지만 저는

.emacs 파일을 열어서 맨 아래쪽에 다음과 같이 추가해 줍니다.

  
(require 'server)
   (when (and (= emacs-major-version 23)
           (= emacs-minor-version 1)
           (equal window-system 'w32))
   (defun server-ensure-safe-dir (dir) "Noop" t))
   (server-start)


간단하게 설명하자면 server-ensure-safe-dir 이라는 함수가 안전한지 여부를 확인하는 함수인데 소유자 건으로 이 함수에서 에러를 뱉어 내는 것입니다. 이 함수를 무조건 t 만 리턴하는 거수기 함수로 바꿔버리면 모든 것은 간단하게 끝이 납니다.

그리고 추가로 "C:\Users\sdssss\AppData\Roaming\.emacs.d\server"  이 디렉토리 의 마지막 즉 server 디렉토리를 $HOME/.emacs.d 안으로 복사해줍니다. 이건 또 왜 해주냐면, server-ensure-safe-dir 함수가 거수기가 되 버려서 , $HOME 밑에서 server 의 존재를 찾습니다. 따라서 복사해주면 모든 것이 OK 입니다.





    EmacsW32 에서 grep 을 이용하여 정규표현식으로 검사할려고 하면 "memory exhausted" 에러가 발생하는
     현상을 수정하는 방법입니다. 이 현상은 굳이 EmacsW32 의 문제라기 보다는 grep for Windows 버젼의
     문제인것 같습니다. 따라서 버젼이 다른 grep 을 사용하고 있었다면 발생 안했을 확률이 높습니다.

     왜냐하면 EmacsW32 안에 포함되어 있는 grep 의 버젼이 문제가 있는 버젼이기 때문입니다. grep 의
     버젼이 2.5.1 인데 그러한 문제를 포함하고 있습니다.

     Grep for Windows(클릭) 사이트에서 최신 버젼으로 다운 받습니다. 최신 버젼은 2.5.4 버젼이군요. 



     1. 여기에서 Setup File을 받아서 설치합니다. 

'Complete package, except sources' 를 받아서 설치합니다. 

'C:\Program Files\Emacs\EmacsW32\gnuwin32\bin' 안에 있는 grep.exe 파일을 지워버립니다. 

     2. 수동으로 설치하는 방법입니다. (제가 선택한 방법입니다)

'Binaries' 와 'Dependencies' 를 내려 받습니다. 

'bin' 디렉토리 안에 있는 내용을 전부 'C:\Program Files\Emacs\EmacsW32\gnuwin32\bin' 에다가
        강제로 복사해 줍니다. 




     이제 그러한 문제는 사라졌군요. 



+ Recent posts