Czy można podczas tworzenia aplikacji na Androida odwołać się do biblioteki javax.script.ScriptEngine? Jeśli nie, to czy istnieje możliwość oceny wyrażenia javascript w systemie Android?Odnośnik javax.script.ScriptEngine w systemie Android lub ocena wyrażenia javascript
Odpowiedz
javax.script.ScriptEngine nie jest domyślną częścią Androida, ale możesz łatwo podskoczyć do potrzebnych bibliotek (zakładając, że rozmiar jest rozsądny, nie jestem pewien) i uwzględnić je w twoim projekcie.
Zgodnie z tym post, javax.script.ScriptEngine nie jest dostępny w pakiecie Android SDK. Możesz wypróbować poniższe kroki, aby dołączyć bibliotekę, ale kod może nie działać, nawet jeśli zostanie skompilowany.
Przy użyciu zestawu narzędzi Android Development Toolkit w systemie Windows wykonałem następujące kroki, aby uzyskać bibliotekę javax.script.
- Kliknij projekt prawym przyciskiem myszy, przejdź do Właściwości (projekt).
- Pod ścieżką budowania Java wybrałem kartę Biblioteki.
- Wybierz Dodaj Biblioteka znajduje się na środkowym prawej stronie zakładki
- Wybierz JRE biblioteki systemowej obszarze Dodaj Biblioteki i kliknij Dalej ...
- Wybierz Workspace Domyślny JRE (JRE 7)
- Kliknij przycisk Zakończ.
- Kliknij przycisk Ok na ścieżce budowania Java, aby istnieć właściwości projektu.
Javax.script został załadowany.
Dla klas javax.script.ScriptEngine, javax.script.ScriptEngineFactory i tak dalej, możesz dodać jsr223.jar do swojego projektu Android: po prostu skopiuj plik .jar do swojego katalogu libs i dodaj go z Właściwości -> Ścieżka budowania Java.
Te klasy pozwolą na kompilację silników zgodnych z JSR 223. Możesz następnie wykonać new SomeScriptEngienFactory().getScriptEngine()
, aby uzyskać silnik. Udało mi się to zrobić przy pomocy JNLua 1.0.4 i Rhino 1.7R2.
Plik jsr223.jar można pobrać z http://www.java2s.com/Code/Jar/j/Downloadjsr223jar.htm, bezpośredni link to http://www.java2s.com/Code/JarDownload/jsr223/jsr223.jar.zip.
Jeśli chcesz ocenić jakiś kod w JS w Android
1) do zależności Gradle dodać (rhino):
compile 'org.mozilla:rhino:1.7R4'
2) napisać kod tak, aby uzyskać wynik JS oceny
Context rhino = Context.enter()
// turn off optimization to work with android
rhino.optimizationLevel = -1
String evaluation = "2+2"
try {
ScriptableProject scope = rhino.initStandardObjects()
String result = rhino.evaluateString(scope, evaluation, "JavaScript", 1, null).toString()
} finally {
Context.exit()
}
3) można napisać bardziej skomplikowanych skryptów JS, aby uruchomić w aplikacji na androida także (zabawy ctions itp.)
Czy możesz wysłać przykładową aplikację? –