This is a cross-post on my personal blog from my threads posted on AFTVNews and on xda-developers.
For those of you who’ve followed the instructions here to get GApps working on a rooted Fire TV 2, but have been frustrated that it won’t work, I figured out what was missing. It appears the issue is that the newer releases of Open Gapps isn’t installing everything that it’s supposed to be installing. So this guide lays the foundation of everything you need to get to make it work, but there are some additonal steps to take and additional files to sideload to finish the job and get the Play Store running on your Fire TV 2.
First, instead of downloading a -leanback verison of the Play Store, download the newest one that has the [8] designation stating that it’s for Android TV. This is ideal for the Fire TV – for me, it works great. At the time of writing the version I used was Google Play Store 7.5.08.M-xhdpi [8], only a few days old. You also don’t run into the issue of some services not working because the .apk has been resigned.
Secondly, you’ll need some additional tools:
lzip, which you can download here (Windows, other versions are available here – to make it work easier I copied lzip.exe to C:\windows\system32)
7zip, which you can download here (choose the version of your choice, if you’re using Linux you don’t need it since you can just use tar)
Follow the guide up to step 8 and then stop. Before you proceed you’ll need to sideload the missing files.
First, on your PC, extract the Open Gapps .zip file. Inside it go into the Core folder. In here are two apps that are missing that are in .lz format: gmscore-arm64.tar.lz and gsflogin-all.tar.lz. This is where you open a command line and navigate to where you have extracted your Gapps folder. Use lzip.exe to extract the files:
C:\AndroidSDK\platform-tools\open_gapps-arm64-5.1-nano-20170218\Core>lzip -d gmscore-arm64.tar.lz C:\AndroidSDK\platform-tools\open_gapps-arm64-5.1-nano-20170218\Core>lzip -d gsflogin-all.tar.lz C:\AndroidSDK\platform-tools\open_gapps-arm64-5.1-nano-20170218\Core>
If it works properly you won’t see any other feedback. Now you have the same two files, but now they’re .tar files. Use 7-zip to extract them – I just right-clicked on them in Windows Explorer, selected “7zip -> Extract here” for each one. Now you have two folders named gmscore-arm64 and gsflogin-all.
Inside those folders you need the following files:
\gsflogin-all\nodpi\priv-app\GoogleLoginService\GoogleLoginService.apk \gmscore-arm64\nodpi\priv-app\PrebuiltGmsCore\PrebuiltGmsCore.apk \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libAppDataSearch.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libNearbyApp.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libWhisper.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libconscrypt_gmscore_jni.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libgcastv2_base.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libgcastv2_support.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libgmscore.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libgoogle-ocrclient-v3.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libjgcastservice.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libleveldbjni.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libsslwrapper_jni.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libtango_utility_lib.so \gmscore-arm64\common\priv-app\PrebuiltGmsCore\lib\arm64\libwearable-selector.so
Sideload all of them to your Fire TV, the same as you did in step 8 for Phonesky.apk.
Now, continue with step 9. When you get to step 12, I’ll bet that there isn’t a /system/priv-app/Phonesky/Phonesky.apk file to delete, and when you try to do step 13 you’ll get an error saying that the directory doesn’t exist. That’s because Open Gapps didn’t install it at all in the first place! Time to make the directories yourself so that you can upload the files. Perform these commands:
mkdir /system/priv-app/Phonesky mkdir /system/priv-app/GoogleLoginService mkdir /system/priv-app/PrebuiltGmsCore mkdir /system/priv-app/PrebuiltGmsCore/lib mkdir /system/priv-app/PrebuiltGmsCore/lib/arm64
Now, just like step 12, copy all of the files to their proper locations:
cp /sdcard/Phonesky.apk /system/priv-app/Phonesky/ cp /sdcard/GoogleLoginService.apk /system/priv-app/GoogleLoginService/ cp /sdcard/PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/ cp /sdcard/libAppDataSearch.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libNearbyApp.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libWhisper.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libconscrypt_gmscore_jni.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libgcastv2_base.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libgcastv2_support.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libgmscore.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libgoogle-ocrclient-v3.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libjgcastservice.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libleveldbjni.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libsslwrapper_jni.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libtango_utility_lib.so /system/priv-app/PrebuiltGmsCore/lib/arm64/ cp /sdcard/libwearable-selector.so /system/priv-app/PrebuiltGmsCore/lib/arm64/
Now, do step 14 to change the permissions for all of them:
chmod 644 /system/priv-app/Phonesky/Phonesky.apk chmod 644 /system/priv-app/GoogleLoginService/GoogleLoginService.apk chmod -R 644 /system/priv-app/PrebuiltGmsCore/
(The difference in the last one gets all of the files at once, rather than you having to do them individually.)
Now, continue with Step 15 to cleanup the files you uploaded. From here on out it should be smooth sailing. When I rebooted and opened up the Play Store (I used ES File Explorer, but you can sideload AppStarter if you’d like) it popped right up and let me log in! I used the “adb shell input tap 1800 1000” command to do the phantom mouse click referred to in step 3.
I’ve successfully downloaded and run games purchased. Play Games works and my cloud saves from my phone sync to the Fire TV! I had trouble getting Play Music to work, though, not sure what’s up with that, but I’ll figure it out later. Hope this helps y’all out!
To give credit where credit is due, the two posts I got the information from to piece together what was missing were:
http://stackoverflow.com/questions/34291902/android-studio-emulator-does-not-come-with-play-store-for-api-23
https://groups.google.com/forum/#!topic/android-rpi/vH_xwFFjOVM
My apologies for those of you who aren’t rooted, can’t root, and find this information useless. 🙁