Android Java Script를 이용하여 Android APP을 만들때 script file과 html file을 asset 에 저장을 해서
java script 를 사용할경우
바이너리 배포시에 APK 파일안의 assets 폴더를 볼수있기때문에 보안적 이슈가 생깁니다.
예를 들어 key 값이나 로직등등~
예방할 방법은 하드코딩으로으로 Html 이나 Java script file를 String 으로 java class 안에 가지고 있고
java script 를 사용할경우
바이너리 배포시에 APK 파일안의 assets 폴더를 볼수있기때문에 보안적 이슈가 생깁니다.
예를 들어 key 값이나 로직등등~
예방할 방법은 하드코딩으로으로 Html 이나 Java script file를 String 으로 java class 안에 가지고 있고
스크립트 사용시
Html 이나 Java script file 을 local 에 생성하여 사용하면 됩니다.
Progard 를 적용한다 하여도 String 객체는 안적용된다는 말이있는데 확인을 해봐야할듯;;
디컴 파일 해서 그렇게 까지 보고싶으면 어쩔수 없뜸 ㅋㅋ
그런데! 제가 하루동안 헤매인 이유는 local에 저장을 했을 경우 그 위치가 어디인가 입니다.
그 위치는
file:///data/data/패키지 이름/files/파일명입니다~
그리구 만약 스크립트 안의 src='script.js' 요런 부분 도
만약 Android Javascript WebView client 를 모른다!
http://developer.android.com/guide/webapps/webview.html
디벨로퍼에 가시면 자세히 나와있습니다~~
디컴 파일 해서 그렇게 까지 보고싶으면 어쩔수 없뜸 ㅋㅋ
그런데! 제가 하루동안 헤매인 이유는 local에 저장을 했을 경우 그 위치가 어디인가 입니다.
그 위치는
file:///data/data/패키지 이름/files/파일명입니다~
그리구 만약 스크립트 안의 src='script.js' 요런 부분 도
src='file:///data/data/패키지/files/script.js' 요리 바꿔줘야겠죠~ ㅋ
아래는 String 을 local file 로 저장하는 함수
- /**
- * java script html file 을 <br>
- *file:///data/data/패키지명/files/ 위치에 생성해준다.<br>
- *
- * @param oContext
- * @return String HTML 파일 위치 값
- */
- private String copyHTML(Context oContext){
- String sResult = null;
- try {
- //기존 HTML file 삭제 file 양이 크지 않아 삭제후 재 복사하여도 속도에 이슈가 없어서
- //훗날 업데이트시 스팸메일 변경을 대비하여 삭제하고 재 생성
// 파일의 크기가 클경우 생성후 있으면 재생성하지 않는 로직 필요 - deleteHTML(oContext);
- oContext.getFilesDir();
- File oDir = oContext.getFilesDir();
- oDir.mkdir();
- File oFile = new File(oDir.getAbsolutePath()+"/" + FILE_NAME);
- String sPath = oFile.getAbsolutePath();
- //파일이 있을경우
- if(oFile.exists()){
- sResult = "file://" + sPath;
- return sResult;
- }
- FileOutputStream fo = new FileOutputStream(oFile);
- OutputStreamWriter osw = new OutputStreamWriter(fo);
- BufferedWriter bw = new BufferedWriter(osw);
- bw.write(SPAM_HTML); // local 에 저장할 문서
- bw.flush();
- bw.close();
- osw.close();
- fo.close();
- sResult = "file://" + sPath;
- } catch (FileNotFoundException e) {
- sResult = null;
- deleteHTML(oContext);
- e.printStackTrace();
- } catch (IOException e) {
- sResult = null;
- deleteHTML(oContext);
- e.printStackTrace();
- }
- return sResult;
- }
- /**
- * 파일 유무확인해 HTML 파일이 있을경우 삭제
- * @param oContext
- */
- private void deleteHTML(Context oContext) {
- oContext.getFilesDir();
- File oDir = oContext.getFilesDir();
- oDir.mkdir();
- File oFile = new File(oDir.getAbsolutePath() + "/" + FILE_NAME);
- // 파일이 있을경우
- if (oFile.exists()) {
- oFile.delete();
- }
- }
만약 Android Javascript WebView client 를 모른다!
http://developer.android.com/guide/webapps/webview.html
디벨로퍼에 가시면 자세히 나와있습니다~~
'android' 카테고리의 다른 글
eclipse에서 Android framework 소스 보기 Activity 등등 (0) | 2012.02.10 |
---|---|
Android Proguard 설정법 libs 라이브러리 포함 (1) | 2011.12.27 |
구글 IO 2008 행사의 안드로이드 세션 중 'Anatomy & Physiology of an Android' (0) | 2011.10.31 |
Android TextView 안에 이미지 추가 (0) | 2011.10.13 |
한글계정 Android avd 실행시 문제 해결 (0) | 2011.06.21 |