simplegoodmobile, I appreciate the effort being made to write this firewall. It's a much needed application with great potential. As things are right now though, this project needs some serious improvement. I installed this app on an LG G4 running stock Lollipop 5.1 to see how I liked it and assess its use - despite serious reservations in doing so. I love it in theory, but in practice I cannot say that I like it. Please allow me to explain why.
A fundamental issue with this project:
It's closed-source. This application creates a VPN that touches all traffic on the device. Although a fair way to accomplish the goals of this app, that in nature is VERY intrusive. Although I don't really suspect any malicious intent, there is no sure way to verify the integrity of this code. This is huge a no-go for me and many others, who won't touch such an application with a 10-ft pole. You aim to provide security and privacy, yet in doing so you create a huge, unverified and unknown vector that cannot be independently vetted or audited. I hope you understand why this is a huge issue. I see absolutely no need for this to be closed-source. Other projects[1][2][3] employing this methodology already exist, some even pre-dating your project. You haven't really created anything unique that needs to be protected from an intellectual property standpoint from what I see.
Technical issues:
1. Memory leak (see attached screenshots)
There appears to be a very significant memory leak in your code. Within minutes of using this app, hundreds of megabytes of RAM are utilized and not freed. This is a big problem.
2. Inaccuracies
While using this app (although only briefly before uninstalling due to aforementioned issues) there appeared to be some discrepancies in traffic reporting. I was prompted to allow/disallow numerous applications, which once allowed showed no traffic usage at all. I shouldn't have been prompted if there wasn't a pending packet. To dig further - since I was curious about a particular app - I did a packet capture through your utility. I captured a little over two KB from an allowed process. This process communicated with to Amazon web services (54.192.91.89) successfully - approx. 2kb in 11 packets, before I stopped the cap. Your Data Diary showed no usage for this application, nor any other allowed apps. The "Analyze" feature for this process also showed NO communications - that list was empty. This is concerning.
3. Backup/Restore incomplete
More of a functional oversight, than a technical issue. I backed up my settings, cleared cache and data, uninstalled the app, then re-installed the app. I then restored my settings. Your backup and restore works for the per-app configurations, but fails to account for the user-configured domain list. This can be an issue for a lot of users.
Further room for improvement
1. Block by IP (AND block by subnet) functionality would very useful for an application such as this. I'm surprised that these functions are not already employed.
2. I cannot tell, without further testing, if there actually is LTE or IPv6 support. If not , then this needs to be addressed ASAP.
3. PLEASE consider open-sourcing this project. Not doing so SERIOUSLY hinders this project's success as well as your credibility. Speaking for the latter, I couldn't find much in support of you being a credible developer. I do give you the benefit of the doubt, but that's simply not enough to entrust the security and integrity of my device in your code. I'm certain that many others share this opinion. Making this project open-source would go a long way, there is no down-side in doing this.
Sorry if this came off as negative in any way, that's not my intent.
[1] .../store/apps/details?id=app.greyshirts.firewall
[2] .../store/apps/details?id=com.lostnet.fw.free
[3] .../store/apps/details?id=com.netspark.firewall