Android Vendors, Don't Kill My App!
Overview of the "Don't Kill My App" Project
The "Don't Kill My App" project, accessible at dontkillmyapp.com, addresses a pervasive issue faced by app developers on Android platforms. Many Android device vendors implement aggressive background app limitation policies to enhance battery life. However, these policies often disrupt the functionality of apps that require continuous operation, such as sleep trackers or health monitors. This project aims to bring awareness to this issue and provide information and solutions for both users and developers affected by these policies.
Licensing and Content Sharing
The project is open-source, which means its source code is available for public viewing. However, it's important to note that it is not meant to be copied in full. The compiled content displayed on the website is licensed under the Creative Commons BY (CC-BY) license. This allows individuals to share and adapt the content, even for commercial purposes, provided they give appropriate credit to the original authors, using either the website's name or acknowledging the Urbandroid Team.
Available API
For developers who wish to access the information shared by the project, the website offers a JSON API at the endpoint https://dontkillmyapp.com/api/v1/output.json. The API provides data on various Android vendors and their policies. Developers can integrate this API into their own websites or applications. If using the API, contributors are encouraged to notify the team via email at [email protected] and give proper credit to dontkillmyapp.com.
API Documentation
-
API v1: This version consolidates information about all vendors into a single JSON file. Each entry in the JSON includes details such as vendor name, manufacturer aliases, and solutions for both users and developers.
Example scheme:
{ "vendors": [ { "name": "Human-readable vendor name", "manufacturer": ["name", "alias1", "alias2"], "url": "/relative-url-to-vendor", "award": number or null, "position": number or null, "explanation": "JSON-escaped HTML", "user_solution": "JSON-escaped HTML", "developer_solution": "JSON-escaped HTML" } ] }
-
API v2: Unlike v1, this version provides individual JSON files for each vendor, accessible via URLs like https://dontkillmyapp.com/api/v2/nokia.json. This format offers more specific data per vendor.
Example scheme:
{ "name": "Human-readable vendor name", "manufacturer": ["name", "alias1", "alias2"], "url": "/relative-url-to-vendor", "award": number or null, "position": number or null, "explanation": "JSON-escaped HTML", "user_solution": "JSON-escaped HTML", "developer_solution": "JSON-escaped HTML" }
Contributing to the Project
The project actively encourages contributions from the community. Whether through pull requests or discussions via GitHub issues, there are several ways to get involved:
-
Adding or Editing Vendors: Contributors can add new vendors or edit existing entries by modifying markdown files located in the
_vendor
folder. These files follow a specific template to ensure consistency.Example template:
--- name: Nokia layout: vendor permalink: nokia explanation: '<html or markdown here>' user_solution: '<html or markdown here>' developer_solution: '<html or markdown here>' ---
-
Awarding Vendors: Contributors can assign awards to vendors by adding an "award" variable with a numerical value between 1 and 5 in the vendor's markdown file. This can highlight vendors with particularly noteworthy policies.
Origins of the Project
The "Don't Kill My App" initiative was started by the Urbandroid Team, known for their Sleep as Android app. The team, affected by vendor-imposed limitations, gathered extensive information on how to manage these restrictions. This project emerged from early collaborations with indie developers seeking mutual exchange of solutions, evolving into a more comprehensive platform to address the industry's shared challenges.
Overall, "Don't Kill My App" seeks to inform and empower developers and users alike, ensuring their apps can function as intended in a challenging environment.