[Barnes & Noble Nook Tablet] nmyshkin:
Updated and revised, 11-29-20

In this post I am presenting a way to slightly extend the practical range of the 8 gb Nook Tablet by using microG for Google Services Framework spoofing rather than the resource-hogging GApps. Although I have tested these ROMs thoroughly on the BNTV250a, they would all likely run just fine with GApps on the

16 gb

model (I currently run AOSP 7.0 with microG on my 16 gb tablet), while only CM 11 runs acceptably on the 8 gb model with GApps. Let's get that simple setup out of the way first.

I selected the unofficial CM 11 ROM with the final security patches by Chris Hoffmann [https://www.mediafire.com/?gq1y21uz11lr1c0]. It is serviceable for me. The main drawback is the old WebView (which cannot be updated) resulting in the inability of browsers to display many sites properly, including the current default skin for XDA. Despite this, I've come to feel that it's perhaps the best option, with or without GApps. Installing this ROM is easy. Flash with the recovery listed in post #2, reboot, then flash a pico GApps package from Open GApps. To run the ROM without GApps, read on.

I made a quick tour of CM 12.1, CM 13, AOSP 6.0 and AOSP 7.0, and Lineage 14.1. In the following post I'll lay out some pros, cons and hints based on my experiences. I flashed each ROM several times, trying different things, building the system from scratch each time rather than restoring apps from backup. That gave me a chance to work with each OS and see how it would perform not only during setup, but also during a shakedown/tweaking phase. What I can say about all of these ROMs is that GApps effectively kills each and every one on the BNTV250a.

Life without GApps

I, of course, tried side-loading apps without GApps. Easy, right? I thought so until I came to a few that whined about requiring Google Play Services to run. Even mundane things like the NPR News app, my local newspaper and MX Player are "GSF dependent" (Google Services Framework). Then I tried another app that would not install at all. Turns out it did a license verification check (it's free!) and saw no Google anything, so forget it. This was sort of news to me I suppose because even my lowly NST had GApps installed once upon a time, so I never encountered this issue before. You can hunt around for apps elsewhere but if you pick up an app that happens to be featured in the PlayStore, you may be out of luck no matter where you got it from. Or maybe not.

There is a project called microG by XDA member @MaR-V-iN. It consists of a lightweight set of apps (two at minimum, a third if you want location services) which provide the needed authentication to Google servers and/or inquisitive apps. There is a catch: the ROM must support "signature spoofing".

These ROMs do not have that option. You can Google "signature spoofing" to read the pros and cons. This is just information. Caveat emptor, etc. There is an Xposed module called FakeGapps which enables signature spoofing. I tried this on a few ROMs and found it worked fine. At the time I started this there was no official Xposed update for Android 7.0 and as that was one of my targets, I started looking for something else [note: Xposed has since been updated to include Android 7.0 and beyond]. That led me to Tingle by XDA member @ale5000. This is a Python/ADB based method of automatically patching framework.jar to enable signature spoofing. This seemed to me a more direct and elegant approach. Although I was intimidated by it at first, I eventually just dove in. The only thing I didn't already have was Python and that was easy enough to install. The process is basically automatic once it gets going. Unfortunately it does not work for ROMs that are odexed or deodexed. The AOSP 7.0 ROM turned out to fall in that category. Xposed must be used there.

OK, what can all this do for you? It can get you a spoof of Google Services Framework without GApps. Period. There are a few simple additions to allow for location services. It used to be that you could also enable Calendar and Contacts syncing. No more. As for PlayStore access, this is possible running microG with CM 11, but not beyond. It's just too resource intensive. For ROMs beyond CM 11 I found the Aurora Store (F-Droid) to work OK, although not always in the same way. On some ROMs you can use the anonymous Aurora Store login, on others you need to supply a Google account (email). Trial and error.

The General Process

If you have never "flashed" anything before that you can talk about at work, then you need some basic instructions for creating an SD card that will allow you to try out these procedures. The excellent instructions by @digixmax here will get you started with the SD card. You need to follow steps 1-2 to prepare the card, although the version of TWRP you use will depend on the ROM you want to try out (see second post for links--note that the link for TWRP in the SD card preparation instructions is dead. The correct TWRP link for the Nook Tablet is https://dl.twrp.me/acclaim/). Also, the ROM itself will vary (see second post for links) and you will not want GApps (unless you are just installing CM 11 with GApps). The remainder of the steps (3-10, skipping 9) also describe the general process of flashing a ROM (or other "flashable" files like Xposed, etc.) using the SD card.

1. Flash the ROM using an appropriate recovery (I have listed the ones I used in the following post)

2. First boot, enable root, USB debugging and ADB

EITHER

3. Connect tablet to PC via USB and access via ADB ("adb devices"--some of these ROMs require that you approve PC access to the tablet via ADB, so check the tablet screen to approve that option if needed)

4. Open a command window on the PC and navigate to your Python installation directory. Because I was not sure what I was doing I just dumped the entire contents of Tingle into the Python directory. That simplified path issues for me. Type "python main.py" and select option 1. Wait for the "all done", hit CTRL-c and kill ADB server. Disconnect tablet from USB and reboot.

OR

3. Flash appropriate Xposed for the OS; reboot

4. Install Xposed installer app and FakeGApps.apk; use Xposed installer app to enable FakeGapps (signature spoofing); reboot

5. Install root file manager of choice if desired (the CM stock file managers are totally capable of the following operations if given root access; the stock file explorers of the AOSP and Lineage ROMs may allow the same, although I have had mixed results. You can always install a root file manager via ADB before continuing if all else fails) A copy of ES File Explorer is attached below.

for CM 11 without GApps but with the PlayStore:

6. Move Phonesky.apk--i.e. the PlayStore-- (old, lightweight version from a KitKat ROM: http://www.mediafire.com/file/1c2f0n3k3cwsln7/Phonesky.apk/file) into /system/priv-app; set apk file permissions to rwx-r-r.

7. Move microG component apks into /system/priv-app; set apk file permissions to rw-r-r (you need a minimum of Services Core, Services Framework Proxy for this step)

8. Reboot

9. Check microG Settings to be sure spoofing is enabled and other permissions are given; set to enable Google device registration; add an account. This process can be slow. Be patient. If you end up at a black screen, reboot and try again or see if the account is already established.

10. Open the PlayStore. Do some searching. You want to give it time to auto-update (this process may be completely silent). Exit. Check Settings>Apps>Downloaded to see if PlayStore has shown up there. If it has, then it may be updated. You can check yourself to see if the version number is higher. If there is no update, access the PlayStore again and check again. Once you have an update, you're good to go.

OR, for ROMs beyond CM 11:

6. Use root file manager to create the folder "Phonesky" in /system/priv-app. Set folder permissions to rwx-rx-rx. Use root file manager to move "FakeStore" apk into /system/priv-app/Phonesky and set apk file permissions to rw-r-r.

7. Move microG component apks into /system/priv-app; set apk file permissions to rw-r-r (you need a minimum of Services Core, Services Framework Proxy for this step)

8. Reboot

9. Check microG Settings to be sure spoofing is enabled and other permissions are given.

It's a lot, but if I could do it many times over you could do it once :)

In the end you'll have a tablet spoofing Google Services Framework so most apps will run without whining, but without the crushing weight of the PlayStore or the full GApps.

Contacts and Location

Life without GApps doesn't mean you have to give up these services. Just keep in mind that running background services can compromise a system that is already on the edge.

I tested the instructions that follow on a BNTV250a, using the stock Contacts and Calendar apps.

1. Contacts

There are some places in "on-line land" that describe a method for enabling contacts sync. I have not found the various methods to work any longer. It is possible to sync Contacts using DavDroid. There is only one version that will run on CM 11 and the same app will run on the other ROMs as well (attached below). However, you are adding more overhead to a device that is already pushing the limits. In the end I opted to export my contacts in vcard format and read them in as a local file. The more socially active may find this unacceptable, but it works for me.

2. Location

To enable location you will need to install an app which coordinates WiFi triangulation (something usually handled by GApps). There are two possibilities. You can get a Unified NLP apk from the microG download page. After installing the app you can check your microG settings to see if everything is OK. Then you can check Settings>Location and set it up the way you want.

If you want to use Maps you will also need to flash a maps.zip file from microG. This contains a couple of library files for Maps. As far as the Maps app itself, I have never had good performance from any version of Google Maps on my devices--until now. That's because I went fishing for an older, less bloated version that would run on the BNTV250a. It works beautifully on all my devices from KitKat to Nougat and allows pre-cache of map areas which don't expire. I've attached a copy of the apk file below.

Email

The stock Email client works great (at least for GMail accounts) and looks a lot like GMail (no surprise there). If you have your heart set on GMail, version 4.5.2--from GApps for Jellybean--seems to run just fine with a footprint of about 11 MB. I've attached a copy below.