답변
나는 방법 늦게 여기에 파티에 생각은하지만 정확한이 있었다 필요한 것. iOS 7에는 JavaScriptCore 이 기본적으로 포함되어 있으므로 (제한된 문서에도 불구하고) 사용하기가 정말 쉽습니다. 문제는 Android에서도 비슷한 것을 사용할 수 없다면 사용하고 싶지 않다는 것입니다. 그래서 AndroidJSCore project을 만들었습니다. 그것은 당신이 부피가 큰 WebView 및 삽입을 요구하지 않고 안드로이드에서 네이티브 JavaScript 코드를 사용할 수 있습니다. Java와 Javascript간에 비동기식으로 호출을 원활하게 만들 수도 있습니다.
업데이트 27 3 월 17 일 : AndroidJSCore는 LiquidCore으로 대체되었습니다. LiquidCore는 JavascriptCore보다는 V8을 기반으로하지만 기본적으로 동일합니다. documentation on using LiquidCore as a raw Javascript engine을 참조하십시오. 문서에서
는 :
이 ... 시작하는, 당신은 자바 스크립트 JSContext
을 작성해야합니다. JS 코드 의 실행은이 컨텍스트에서 발생하며 별도의 컨텍스트는 격리 된 가상 컴퓨터이며 은 서로 상호 작용하지 않습니다.
JSContext context = new JSContext();
이 컨텍스트 자체는 JavaScript 개체입니다. 따라서 속성을 가져오고 설정할 수 있습니다. 이것은 전역 JavaScript 객체이므로이 속성은 환경의 모든 후속 코드에 대한 최상위 수준 컨텍스트에 있습니다.
context.property("a", 5);
JSValue aValue = context.property("a");
double a = aValue.toNumber();
DecimalFormat df = new DecimalFormat(".#");
System.out.println(df.format(a)); // 5.0
또한 맥락에서 자바 스크립트 코드를 실행할 수 있습니다
context.evaluateScript("a = 10");
JSValue newAValue = context.property("a");
System.out.println(df.format(newAValue.toNumber())); // 10.0
String script =
"function factorial(x) { var f = 1; for(; x > 1; x--) f *= x; return f; }\n" +
"var fact_a = factorial(a);\n";
context.evaluateScript(script);
JSValue fact_a = context.property("fact_a");
System.out.println(df.format(fact_a.toNumber())); // 3628800.0
또한 자바에있는 함수를 작성할 수 있지만, 자바 스크립트에 노출 :
JSFunction factorial = new JSFunction(context,"factorial") {
public Integer factorial(Integer x) {
int factorial = 1;
for (; x > 1; x--) {
factorial *= x;
}
return factorial;
}
};
이것은 자바 스크립트 함수를 만듭니다 JavaScript에서 을 호출하면 Java 메소드 factorial
이 호출됩니다.그런 다음 JavaScript VM에 전달할 수 있습니다.
context.property("factorial", factorial);
context.evaluateScript("var f = factorial(10);")
JSValue f = context.property("f");
System.out.println(df.format(f.toNumber())); // 3628800.0
방금 AndroidJSCore에 시도해 봤는데 꽤 잘 작동하는 것 같습니다! 그러나 32 비트 컴퓨터에서만 실행된다는 것을 알았습니다. 64 비트 지원을 추가 할 계획입니까? 대부분의 새 휴대 전화가 64 비트이기 때문에, 그것은 꽤 많은 사람들을 놀라게합니다. – user2771609
예. 2.1 릴리스에서는 64 비트 지원이 계획되어 있습니다. NDK 컴파일러는 GCC 4.9.2를 기반으로합니다. JavaScriptCore가 의존하는 atomics 관련 버그가 있습니다. 전 문제를 해결하는 GCC 4.9.3 빌드에서 일하고 있습니다. 일단 내가 일할 수있게되면, 나는 그것을 풀어 놓을 것이다. 곧 올거야. –
오, 굉장해! 고마워, 나는 정말로 기대하고있다. – user2771609
Javascript를 사용하여 기본 앱을 만드는 것과 같은 것을 의미합니까? 웹 도구/언어를 사용하여 기본 앱을 만들 수있는 Titanium Mobile 같은 도구가 있다는 것을 알고 있습니다.
웹 앱을 만들 수도 있습니다. 거기에 많은 리소스와 튜토리얼이 있습니다. "Android Web App tutorial"또는 비슷한 것을 검색하면됩니다.
예, HTML 페이지를 가리키는 요약 코드를 만들고 자바 스크립트와 CSS를 포함 할 수 있습니다.
이이 당신을 도울 수있는 다른 라이브러리입니다
- 1. 안드로이드에있는 nstimer
- 2. 안드로이드에있는 파일 탐색기
- 3. 안드로이드에있는 그림을 가진 ListView
- 4. 안드로이드에있는 팩맨에 대한 도움?
- 5. 안드로이드에있는 wordpress 블로그
- 6. 안드로이드에있는 sd 카드에서 데이터베이스에
- 7. 안드로이드에있는 gridview 항목의 테두리
- 8. 안드로이드에있는 캐릭터 선택 자
- 9. 안드로이드에있는 GPS 모니터링 서비스
- 10. 안드로이드에있는 파일 서버
- 11. 안드로이드에있는 ListView에 요소를 넣는 방법?
- 12. 이미지에 관하여 안드로이드에있는 URL에서 디스플레이
- 13. 안드로이드에있는 Qt 또는 GUI의 GUI
- 14. 안드로이드에있는 버튼을 클릭하면 이미지 저장
- 15. 목록보기 안드로이드에있는 체크 박스와 이미지가있는
- 16. 스타일 처음 2 안드로이드에있는 TextViews ListView 다르게
- 17. 안드로이드에있는 연락처에서 전화 번호를 삭제하는 방법은 무엇입니까?
- 18. 안드로이드에있는 버튼 내부 목록보기를 클릭 청취자
- 19. 저장하고 검색하는 방법 안드로이드에있는 내용으로 MP3를
- 20. 안드로이드에있는 애니메이션 후 리스너가 작동하지 않습니다.
- 21. 안드로이드에있는 내 앱에서 음악 컨트롤 키 보내기
- 22. 안드로이드에있는 기존 파일에 데이터를 추가하고 읽으십시오.
- 23. 안드로이드에있는 전자 메일 주소에서 메일을 보내는 방법은 무엇입니까?
- 24. 안드로이드에있는 PHP 서버에서 파일 (pdf, png 등)을 다운로드하는 방법
- 25. 안드로이드에있는 "동적 인"비디오 파일로 listview를 채우는 방법?
- 26. 안드로이드에있는 서버로 카메라를 스트리밍하는 방법에 대한 예가 있습니까?
- 27. sqlite에 저장된 데이터를 안드로이드에있는 MSSQL Server로 옮길 수 있습니까?
- 28. 안드로이드에있는 다른 활동의 데이터베이스에서 데이터를 가져 오는 방법
- 29. 안드로이드에있는 자바 파일에 다른 listview 안에 하나의 listview를 두는 방법?
- 30. 안드로이드에있는 이메일에 로컬로 저장된 이미지를 첨부하는 방법은 무엇입니까?
Android 브라우저 엔진 WebKit은 JavaScript를 실행할 수 있습니다. 따라서 JS 또는 다른 참조 된 파일이 포함 된 HTML 파일을 만들어 사용하십시오. –
자바 스크립트가 아닙니다. 자바 스크립트는 자바와 아무런 관련이없는 언어입니다. 사실 C++은 자바 스크립트보다 자바와 더 밀접한 관련이 있습니다. – slebetman