2012-09-10 3 views
4

문자열/파일을 JavaCompiler와 같은 것을 사용하여 런타임에 컴파일 할 수있는 Java 소스로 변환 할 수 있는지 알고있는 사람은 누구입니까? 이것이 Java 6에서 가능했던 것처럼 보이지만 Android에서 JavaCompiler를 사용할 수 있다고 말하는 사람은 없습니다.문자열을 자바로 변환 안드로이드의 소스 코드

기본적으로 내 목표는 문자열 또는 파일 텍스트를 Android에서 소스 코드로 변환하는 것입니다. 누구든지 어떻게 할 수 있는지 알고 있습니까?

감사합니다.

+1

아마 당신이 실제로 당신을 성취하려고하는 것이 당신이 스크립트를 쓰는 것이 나을지도 모르지만. http://code.google.com/p/android-scripting/ – Hyangelo

+0

을 참조하십시오.이 작업을 수행 할 수 있도록 apk를 다운로드해야하는 것처럼 보입니다. 이와 같은 스크립트를 사용하는 방법은 없습니다. 내 코드에서 사용할 수있는 추가 apk를 다운로드해야합니까? – SpyMachine

답변

2

Android는 Dalvik이 아닌 Java 6을 실행합니다. JavaCompiler는 표준 Dalvik 배포에 포함되어 있지 않으므로 사용할 수 없습니다. Dalvik 런타임은 동적이지 않으므로 임베디드 시스템을 위해 설계되었습니다. 즉석에서 코드를 컴파일하는 것은 그 일을하기 위해해야 ​​할 일 중 하나입니다.

Hyangelo가 제안한 것을 시도하거나 다른 스크립팅 라이브러리를 위해 Google을 사용해보십시오. 예를 들면 Clojure. ;)

+0

위와 같은 질문에 답하십시오^ – SpyMachine

+0

이 라이브러리의 소스 코드를 사용할 수 있습니다. 당신은이 응용 프로그램에 포함시킬 수 있어야합니다. 비록 내가 어떻게하는지에 대한 설명을 찾을 수는 없지만 ... –

+0

그건 그렇고, 비슷한 질문은 전에 물었다 : http://stackoverflow.com/questions/5862569/embedding-script-interpreter-in-android-app –

0

고급 기능을 수행하고 웹 서비스를 설정하여 소스를 컴파일 할 수 있습니다. 이 서비스는 자바 소스를 받아 들여 dalvik 컴파일 된 클래스로 컴파일하고 바이너리로 반환합니다. 당신이 전화에 컴파일되지 않지만 http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

는,이 한 번 당신의 클래스 로더에 삽입, 런타임시 컴파일 될 것이다 가능한 실행을 위해 : 여기에 설명 된대로

이 바이너리는 사용자 정의 클래스 로더에 추가 할 수 있습니다 .

+0

이것은 정말 좋은 생각인데, 나는 그것에 대해서도 생각했다. 그러나 불행하게도 서버와 통신하는 것은 옵션이 될 수 없다. 어쨌든 고마워. – SpyMachine

0

기술적으로 가능하지만 쉽지 않습니다. Terminal IDE을 보면 장치의 소스에서 Android 바이트 코드를 컴파일하는 데 필요한 모든 도구가 포함되어 있습니다. 문자열을 디스크의 파일에 쓰고 컴파일 한 다음 DexClassLoader을 사용하여 컴파일 된 JAR 파일 또는 APK에서 클래스를로드하여 유사한 접근 방식을 취할 수 있습니다.