Integracja Samsung Smart TV SDK z Eclipse Juno (lub nowszym)
Na stronach Samsung Smart TV Apps Developer Forum można znaleźć narzędzia do tworzenia aplikacji na tę platformę (Smart TV). Dla ludzi zaprzyjaźnionych z Eclipse dobrą opcją jest wersja zintegrowana właśnie z tym IDE. Niestety, nawet najnowsza wersja środowiska (SDK 4.0 Beta) bazuje na Eclipse Indigo, czyli jest przestarzała o niemalże dwie generacje (stabilne Juno, Kepler na etapie M3). Na szczęście jest sposób na rozwiązanie tego „problemu” 🙂
Zanim rozpoczniemy integrację, kilka uwag:
- Nie należy ruszać już posiadanych środowisk Eclipse, a także współdzielić workspace’ów (lub przynajmniej zrobić ich backup)
- W przykładzie integracja bazuje na edycji Juno, choć prawdopodobnie identyczna (lub analogiczna) będzie dla każdej kolejnej wersji Eclipse
- Aby nie rozwlekać opisu, w niektórych miejscach zastosuję „skróty myślowe” licząc na samoogarnięcie czytelnika 😉
English-speaking readers should read stackoverflow’s question/answer.
Integracja
Na samym początku musimy ściągnąć podstawkę do dalszych operacji, czyli Eclipse Platform Runtime Binary (czyli coś w stylu „Eclipse bez wtyczek”) dla tej wersji, której chcemy używać. Jak już pisałem, w tym przykładzie użyjemy Juno. Ze ściągniętego archiwum wypakowujemy katalog „eclipse” i wrzucamy go w dowolne miejsce, skąd chcemy go używać (możemy też zmienić jego nazwę, np. na Eclipse Juno). W poniższym przykładzie będzie to lokalizacja D:\Apps\Eclipse Juno, co jest istotne, gdyż w dalszej części pojawiać się będą odwołania do tej ścieżki.
Uruchamiamy oficjalne SDK Samsunga 4.0 (jeśli nie mamy, to musimy ściągnąć i zainstalować) oraz nasz nowy Eclipse Juno (w osobnych workspace’ach). W obu uruchamiamy listę zainstalowanych składników: Help → About Eclipse → Installation Details → Features (ewentualnie Window → Preferences → Install/Update → „Uninstall or update software tha is already installed” → Features). Musimy do Juno doinstalować pakiety, które są w środowisku przygotowanym przez Samsung, są to (grupuję po kategorii):
- Eclipse Packaging Project
- Javascript IDE
- Marketplace Client (opcjonalny, ale warto mieć)
- Eclipse Web Platform Tools
- Eclipse Faceted Project Framework
- Eclipse JavaScript Development Tools
- Eclipse Web Developer Tools
- Eclipse XML Editors and Tools
- Eclipse XPath 2 Developers Tools
- Eclipse XSL Developer Tools
- Eclipse.org
- Eclipse CVS Client
Większość można znaleźć w repozytorium dla edycji Juno w kategorii „Web, XML, Java EE and OSGi Enterprise Development„. XPath 2 nie ma na liście, ale instalowany jest wraz z XSL Developer Tools. Problematyczny jest jedynie pakiet Javascript IDE, gdyż nie da się go zainstalować używając wbudowanych narzędzi – musimy podkraść go z oficjalnego SDK. W tym celu należy skopiować katalogi:
- plugins/org.eclipse.epp.package.javascript_1.4.2.20120131-1457
- features/org.eclipse.epp.package.common.feature_1.4.2.20120213-0814
- features/org.eclipse.epp.package.javascript.feature_1.4.2.20120213-0814
do naszego Eclipse Juno zachowując ich strukturę (czyli plugins do plugins itd.). W tym momencie nasza lista pakietów powinna wyglądać następująco:
Wydawać by się mogło, że to wszystko… ale wyprzedzając fakty i oszczędzając trochę nerwów dodam, że trzeba też doinstalować Eclipse Graphical Modeling Framework (GMF) Runtime, w przeciwnym wypadku dalsze kroki się nie powiodą, a my ewentualnie dogrzebiemy się do logów w workspace .metadata/.log (fragment):
!MESSAGE Problems resolving provisioning plan.
!SUBENTRY 1 org.eclipse.equinox.p2.director 2 0 2012-11-25 00:33:56.606
!MESSAGE Unable to satisfy dependency from tv.samsung.sdk.core 2.1.1.201209271345 to bundle org.eclipse.gmf.runtime.common.core 0.0.0.
Wyłączamy Eclipse Juno. Następnym krokiem jest skopiowanie katalogu dropins/sec_smart_tv_sdk z Samsung SDK 4.0 (w 3.5.2 nie ma tego katalogu!) do naszego Eclipse Juno. Dropins to taki katalog do lokalnej instalacji (takie jakby drzwi kuchenne), z którego Eclipse instaluje pakiety podczas uruchamiania (zresztą podobnie robi w przypadku plugins i features). Aby zostało to wykonane poprawnie, Eclipse musi być uruchomiony jako administrator. W tym momencie mamy:
Niestety, przy próbie wejścia w ustawienia Samsung Smart TV SDK → Samsung Smart TV SDK Preferences widzimy komunikat:
Dlatego musimy jeszcze wskazać ścieżkę do wcześniej zainstalowanego SDK 4.0. Eclipse dostarczany razem z SDK można usunąć.
Owocnego developingu 🙂
Uwagi
Jeśli mimo wykonania powyższych kroków Samsung Smart TV SDK nie pojawia się w naszym Eclipse Juno, możemy spróbować debugować w czym problem. W tym celu w katalogu głównym naszego Eclipse Juno tworzymy plik .options a w nim wstawiamy:
org.eclipse.equinox.p2.core/reconciler=true
Następnie uruchamiamy Eclipse z włączonym debugowaniem: Start -> Uruchom -> D:\Apps\Eclipse Juno\eclipse.exe -debug
Na podstawie wyświetlanych informacji czasem da się dojść do tego w czym tkwi problem, w tym przypadku np. bez wspomnianego GMF otrzymalibyśmy komunikat „Some units will not be installed, because they are already installed or there are dependency issues”, który w zasadzie niewiele mówi, ale jednak na coś wskazuje. O wykrywaniu dropins’ów więcej można przeczytać tutaj.
W razie czego z pomocą mogą przyjść:
- Usunięcie wpisów dotyczących sec_smart_tv_sdk z D:\Apps\Eclipse Juno\configuration\org.eclipse.osgi\bundles\…\data\cache.timestamps (gdzie … to jaki losowy numer, najwygodniej jest wyszukać plik cache.timestamps)
- Plik logów w wybranym przez nas workspace (.metadata/.log)
Kategoria:Programowanie, Użyteczne
Przekaż dalej: