Announcement

Collapse
No announcement yet.

Announcement

Collapse
No announcement yet.

Clone FireTv or Nexus Player

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Clone FireTv or Nexus Player

    This is my first post ever on the forum, so before i get started i would like to thank Finless Bob for all the great work that you have done that I have benefited from, and all those who asked the same question that i myself had and all those who solved their and my own problem. so here s my question, i would like to clone the specific software from a Nexus Player or a Firetv and put it on a Tronsmart vega S89. Is this even possible, and if not is there a way to incorporate those beautiful launchers onto my Vega running the latest version of the finless rom? Thanks

    #2
    First I'd try to simply install the launcher apk on the box and check with logcat why it fails. You could then post about it here and we can come with suggestions. Last time I check the Android TV launcher didn't specify Android 5.0 as a requirement on the Play Store so hopefully it could be made to work. Something I forsee as an issue is the presumed lack of widevine DRM blobs for this box.

    EDIT:

    http://www.cnx-software.com/2014/12/...#ixzz3MLlAiHOy (has a link to the APK)



    EDIT 2: Since it defines android:sharedUserId="android.uid.system" I think you'll at the very least need to push it to /system/app, push any libs the APK contains to /system/lib and resign the APK with the key Tronsmart used when building the ROM for this device.

    Because of the fact that the official tronsmart update.zip files are signed with AOSP's default testing keys, there is a slim chance that Tronsmart uses the default AOSP platform key too. If that's the case you can find that in the AOSP source tree and use signapk.jar to resign it.

    EDIT 3: Seeing as the APK doesn't contain any libs, you might have to get any required libs, if any, from the system image of an ARM-based Android TV box. Hopefully it simply doesn't need any extra libs though.

    EDIT 4: Doing the steps I suggested above makes it install properly and launch, showing the Android TV GUI for a split second before it crashes. I was going to upload the logcat but forgot before I turned it off (I wanted to reboot it after removing it again).
    Last edited by blunden; 01-25-2015, 22:31.

    Comment


      #3
      thank you for such a thorough reply, could all of this be circumvented with a id nexus player or google tv Spoofer, and if so where would i be able to find one?

      Comment


        #4
        I would be very interested in helping in anyway for my devices. I know nothing about development though so testing would be my limit

        Comment


          #5
          Originally posted by thekid05 View Post
          thank you for such a thorough reply, could all of this be circumvented with a id nexus player or google tv Spoofer, and if so where would i be able to find one?
          The issue seems to be it calls a method that doesn't exist in normal versions of Android 4.4, specifically "android.content.pm.ActivityInfo.loadBanner". It seems like it was added in API Level 20 which corresponds to Android 4.4W (the version first released on Android Wear watches).

          My take on it based on the decompiled code below is that it fails when it tries to generate the homescreen because that uses this new method, the Android TV launcher actually requires Android 5.0 or a modified version of Android 4.4 with that new code added (which is the way the initial Android TV boxes shipped I imagine, before they got the 5.0 update).

          Decompiled code:

          Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.


          Stacktrace:

          Code:
          E/AndroidRuntime(  871): FATAL EXCEPTION: AsyncTask #2
          E/AndroidRuntime(  871): Process: com.android.mclauncher, PID: 871
          E/AndroidRuntime(  871): java.lang.RuntimeException: An error occured while executing doInBackground()
          E/AndroidRuntime(  871):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
          E/AndroidRuntime(  871):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
          E/AndroidRuntime(  871):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
          E/AndroidRuntime(  871):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
          E/AndroidRuntime(  871):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
          E/AndroidRuntime(  871):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
          E/AndroidRuntime(  871):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
          E/AndroidRuntime(  871):     at java.lang.Thread.run(Thread.java:841)
          E/AndroidRuntime(  871): Caused by: java.lang.NoSuchMethodError: android.content.pm.ActivityInfo.loadBanner
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.LaunchPoint.<init>(LaunchPoint.java:55)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.LaunchPointListGenerator.createLaunchPointList(LaunchPointListGenerator.java:163)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.LaunchPointListGenerator.generateLaunchPointList(LaunchPointListGenerator.java:89)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.LaunchPointListGenerator.getNonGameLaunchPoints(LaunchPointListGenerator.java:126)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.AppsAdapter.refreshDataSet(AppsAdapter.java:298)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.AppsUpdateListener$InitTask.doInBackground(AppsUpdateListener.java:88)
          E/AndroidRuntime(  871):     at com.android.mclauncher.apps.AppsUpdateListener$InitTask.doInBackground(AppsUpdateListener.java:77)
          E/AndroidRuntime(  871):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
          E/AndroidRuntime(  871):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
          E/AndroidRuntime(  871):     ... 4 more
          V/MulticastDnsServer(  861): Done processing connectivity message
          W/ActivityManager(  467):   Force finishing activity com.android.mclauncher/.MainActivity
          If Tronsmart ever updates our Vega S89 to Lollipop (assuming AmLogic releases a Lollipop BSP for this SoC) we might get it working. I wouldn't count on it before then though.

          EDIT: It seems AmLogic released the reference Lollipop code for their S802, S805 and S812 SoCs a few days ago. That certainly is promising.

          Last edited by blunden; 02-05-2015, 17:10.

          Comment


            #6
            I couldn't help myself so I decided to test my theory on my tablet and sure enough, it works. All limitations mentioned above still apply though.

            Behold!

            Comment


              #7
              very cool

              Comment

              Working...
              X