From 6dad0c09f0266e222fc71fa7eef4e3d23dad247b Mon Sep 17 00:00:00 2001 From: Alin Lupascu Date: Tue, 19 May 2020 14:20:45 -0600 Subject: [PATCH] Initial commit --- .gitignore | 102 +++++++ LICENSE | 201 +++++++++++++ README.md | 174 +++++++++++ app/.gitignore | 3 + app/ThemerConstants.gradle | 21 ++ app/build.gradle | 172 +++++++++++ app/proguard-rules.pro | 22 ++ app/src/main/AndroidManifest.xml | 75 +++++ .../res/values/colors.xml | 4 + .../res/values/dimens.xml | 7 + .../drawable-anydpi/ic_camera_alt_24dp.png | Bin 0 -> 14987 bytes .../res/drawable-anydpi/ic_mic_26dp.png | Bin 0 -> 14987 bytes .../res/drawable-anydpi/ic_phone_24dp.png | Bin 0 -> 14987 bytes .../res/drawable-xxhdpi/fod_icon_default.png | Bin 0 -> 2508 bytes .../res/drawable/ic_camera_alt_24dp.png | Bin 0 -> 14987 bytes .../res/drawable/ic_camera_fod.xml | 10 + .../res/drawable/ic_fingerprint_error.xml | 7 + .../res/drawable/ic_lock_24dp.xml | 5 + .../res/drawable/ic_lock_open_24dp.xml | 5 + .../res/drawable/ic_lock_open_fod.xml | 7 + .../res/drawable/ic_mic_26dp.png | Bin 0 -> 14987 bytes .../res/drawable/ic_mic_fod.xml | 10 + .../res/drawable/ic_phone_24dp.png | Bin 0 -> 14987 bytes .../res/drawable/ic_phone_fod.xml | 10 + .../lockscreen_fingerprint_draw_off.xml | 23 ++ .../lockscreen_fingerprint_draw_on.xml | 23 ++ ...ckscreen_fingerprint_error_state_to_fp.xml | 34 +++ ...ckscreen_fingerprint_fp_to_error_state.xml | 53 ++++ .../res/values/colors.xml | 4 + .../res/values/dimens.xml | 8 + .../res/values/strings.xml | 4 + .../alienator88/lockr/AdvancedConstants.kt | 55 ++++ .../alienator88/lockr/SubstratumLauncher.kt | 272 ++++++++++++++++++ .../com/alienator88/lockr/ThemeFunctions.kt | 108 +++++++ .../main/res/drawable-xxhdpi/heroimage.png | Bin 0 -> 218051 bytes app/src/main/res/drawable/btn_continue.xml | 5 + app/src/main/res/drawable/btn_donate.xml | 8 + app/src/main/res/drawable/dialog_bg.xml | 5 + app/src/main/res/drawable/ic_changelog.xml | 11 + app/src/main/res/drawable/ic_paypal.xml | 12 + app/src/main/res/drawable/ic_playstore.xml | 10 + app/src/main/res/drawable/ic_telegram.xml | 12 + app/src/main/res/font/exo_2_light.ttf | Bin 0 -> 104148 bytes app/src/main/res/font/jolly_lodger.ttf | Bin 0 -> 39800 bytes app/src/main/res/layout/custom_dialog.xml | 134 +++++++++ .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8120 bytes .../main/res/values/antipiracy_strings.xml | 6 + app/src/main/res/values/dialog_resources.xml | 26 ++ .../main/res/values/theme_configurations.xml | 27 ++ build.gradle | 60 ++++ gradle.properties | 19 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 188 ++++++++++++ gradlew.bat | 100 +++++++ settings.gradle | 1 + 56 files changed, 2049 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/ThemerConstants.gradle create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/colors.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/dimens.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable-anydpi/ic_camera_alt_24dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable-anydpi/ic_mic_26dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable-anydpi/ic_phone_24dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable-xxhdpi/fod_icon_default.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_camera_alt_24dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_camera_fod.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_fingerprint_error.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_24dp.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_24dp.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_fod.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_mic_26dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_mic_fod.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_phone_24dp.png create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_phone_fod.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_off.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_on.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/values/colors.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/values/dimens.xml create mode 100644 app/src/main/assets/overlays/com.android.systemui/res/values/strings.xml create mode 100644 app/src/main/kotlin/com/alienator88/lockr/AdvancedConstants.kt create mode 100644 app/src/main/kotlin/com/alienator88/lockr/SubstratumLauncher.kt create mode 100644 app/src/main/kotlin/com/alienator88/lockr/ThemeFunctions.kt create mode 100644 app/src/main/res/drawable-xxhdpi/heroimage.png create mode 100644 app/src/main/res/drawable/btn_continue.xml create mode 100644 app/src/main/res/drawable/btn_donate.xml create mode 100644 app/src/main/res/drawable/dialog_bg.xml create mode 100644 app/src/main/res/drawable/ic_changelog.xml create mode 100644 app/src/main/res/drawable/ic_paypal.xml create mode 100644 app/src/main/res/drawable/ic_playstore.xml create mode 100644 app/src/main/res/drawable/ic_telegram.xml create mode 100644 app/src/main/res/font/exo_2_light.ttf create mode 100644 app/src/main/res/font/jolly_lodger.ttf create mode 100644 app/src/main/res/layout/custom_dialog.xml create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values/antipiracy_strings.xml create mode 100644 app/src/main/res/values/dialog_resources.xml create mode 100644 app/src/main/res/values/theme_configurations.xml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..098cc86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,102 @@ +############################################################################# +# +# .gitignore declares what files should be ignored by git +# +# This particular file is a composite of github's Android and Eclipse +# files, along with some custom additions. +# +############################################################################# + +############################################################################# +# Eclipse related files +############################################################################# + +*.pydevproject +.metadata +.gradle +bin/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +############################################################################# +# Android related files +############################################################################# + +# Built application files +*.apk +#*.ap_ + +# Generated files +gen/ + +# Gradle files +build/ + +# Proguard folder generated by Eclipse +proguard/ + +#Log Files +*.log + +############################################################################# +# Other Misc. files +############################################################################# + +# Temp files for KDE and other Editor's +*~ + +############################################################################# +# Android Studio related files +############################################################################# + +.idea/ +#gradle.properties +*.iml + +############################################################################# +# Encrypted Assets +############################################################################# +app/src/main/assets-temp + +############################################################################# +# Build Bots +############################################################################# +app/release/output\.json + +############################################################################# +# C++ +############################################################################# +app/.externalNativeBuild + +############################################################################# +# Windows thumbnail cache +############################################################################# +Thumbs.db + +############################################################################# +# Mac thumbnail cache +############################################################################# +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..3224528 --- /dev/null +++ b/README.md @@ -0,0 +1,174 @@ +# Substratum Theme Template + +The official theme template from the team, for every prospective/current themer who wishes to join the Substratum game! + +There are seven types of Substratum as of this date (06/05/18) + - Substratum OMS (3/7) (Marshmallow) [Marshmallow has been deprecated since 510, but it is still available] + - Substratum OMS (7) (Nougat) + - Substratum Dynamic Overlays (Stock Oreo) [Will require a rooted device, or Andromeda installed] + - Substratum Dynamic Overlays (Oreo) + - Substratum Samsung (RRO-OMS fusion) [Will require a device with the samsung plugin] + - Substratum Samsung Oreo (OMS-RRO fusion) [Will require a device with the andromeda plugin] + - Substratum Legacy (RRO) [Rooted] + +To get started, first of all, FORK and CLONE this project on GitHub and open it up with Android Studio (We recommend to keep yourself up to date with the latest Google has to offer) + +## Step 0: PRECONFIGURATIONS! +Install the latest Android Studio Preview: https://developer.android.com/studio/preview/index.html + +Disable Instant Run: http://stackoverflow.com/a/35169716 + +Disable activity launch on theme: + - Click on the above dropdown menu in Android Studio that says `app` (by default there should be an icon of andy with an x on it) + - Click on `Edit configurations...` + - Locate "Launch Options" and instead of Default Activity, select Nothing + - This will now push your theme APK to your device without having to worry about build errors + +## Step 1: Package Naming +The FIRST thing you need to change is the package identifier (the name the app identifies as) to something more meaningful to you. Open up [build.gradle](app/build.gradle) and look for this line +``` +applicationId "substratum.theme.template" +``` +Change this to anything you want, for instance: +``` +applicationId "com.yourname.themename" +``` + +Change Package Name in the project structure (optional): + - Just follow the instructions listed brilliantly [here](http://stackoverflow.com/a/29092698) + +NOTE: If you change your project structure name, the AndroidManifest AND the build.gradle package names must match, or else encrypted assets will break. + +## Step 2: Theme Properties +You can control your theme properties such as whether your theme supports OMS, RRO or both inside +the theme configuration file: [theme_configurations.xml](app/src/main/res/values/theme_configurations.xml) + +For wallpapers, make sure you use DIRECT LINKS for everything you see in the pastebin template. We recommend using pastebin, +but you could use Google Drive (for the XML file). Pictures must be located in a public area so that people can download them freely. + +## Step 3: Start theming! +### Audio +To install system sound effects, you will need to have an audio folder, just like it's listed [here](app/src/main/assets/audio). + +You are allowed to add multiple audio files and name them differently so they show up indivually on the spinner dropdown in the app. + +Example: +``` +assets/audio/StarWarsLockUnlock.zip +``` +Audio ZIP root structure: +``` +StarWarsLockUnlock.zip/ui/Lock.ogg(or mp3) +StarWarsLockUnlock.zip/ui/Unlock.ogg(or mp3) +StarWarsLockUnlock.zip/ui/effect_tick.ogg(or mp3) +StarWarsLockUnlock.zip/alarms/alarm.ogg(or mp3) +StarWarsLockUnlock.zip/ringtones/ringtone.ogg(or mp3) +StarWarsLockUnlock.zip/notifications/notification.ogg(or mp3) +``` + +### Boot Animations +To install boot animations, you will need to have a bootanimations folder, just like it's listed [here](app/src/main/assets/bootanimation). + +You are allowed to add multiple bootanimations and name them differently so they show up individually on the spinner dropdown in the app. + +Example: +``` +assets/bootanimation/Sakura.zip +``` + +### Shutdown Animations +To install shutdown animations, you will need to have a shutdownanimation folder, just like it's listed [here](app/src/main/assets/shutdownanimation). + +Just like bootanimations, but only enabled on Oreo based devices and above! + +Example: +``` +assets/shutdownanimation/Sakura.zip +``` + +### Fonts +To install fonts, you will need to have a fonts folder, just like it's listed [here](app/src/main/assets/fonts). + +You are allowed to add multiple fonts and name them differently so they show up individually on the spinner dropdown in the app. + +If you are looking to load up DOWNLOADED fonts from the internet, then download the ZIP from your source, extract it and navigate INTO the folder, until you find the folder "fonts" in "/system/fonts", and ZIP the whole contents of the folder up to form your new fonts pack. + +This also supports fonts.xml within the font's ZIP file, so if you have any knowledge of this, you can add it in. + +Example: +``` +assets/fonts/Ubuntu.zip +``` +Font ZIP root structure: +``` +Ubuntu.zip/font1.ttf +Ubuntu.zip/font2.ttf +Ubuntu.zip/font3.ttf +``` + +### Overlays +If you had any experience with overlays on CMTE, it is rather the same format, except we added our own twists for enhanced theming capabilities for Substratum users. + +If you would like to theme an application, first you need their package identifier. Let's say you wanted to theme Substratum (projekt.substratum), you will create a folder within "assets/overlays" and name it the package name and start following the app's resource structure, e.g. +``` +assets/overlays/projekt.substratum/res/values/colors.xml +``` + +### Overlay Type Options Guide + +https://docs.google.com/document/d/1H8tC1hjhADPOZdjebJEeC3FYZid9gZ7F56OA-27PxfU/edit?usp=sharing + +## Step 4: Finalize your theme! +To get your theme to show up on Substratum, all you need to ensure that your hero image relates to your theme. The hero image DETERMINES the color of the automatic actionbar and nav bar colors based on the (0,0)'th pixel on your image. Your theme hero image is located [here](app/src/main/res/drawable-xxhdpi/heroimage.png). + +If you have a completely white image, your actionbar and nav bar will change to that color, and the text colors will determine whether the black text is more visible on that color, or a white color. + +## Step 5: Include a built in changelog for your users! + +If you take a look at the aforementioned theme_configurations.xml, you will see a with name "ThemeChangelog" where you can add your own changelog line by line. Please do not include line breaks unless you really have to. Substratum does this automagically! You can have as many lines as you want, so don't worry about the default 5 lines in the template! + +## Step 6: Safeguard your theme! Don't let the pirates win! + +### If you want to enable the Substratum theme for other Theme Managers (e.g. Slim) +In ThemerConstants.gradle, change the [SUPPORTS_THIRD_PARTY_SYSTEMS](app/ThemerConstants.gradle#L9) on line 9. + +### If you don't want to activate AntiPiracy +Then you can stop reading and get your theme published! Good luck! + +### Getting started with AntiPiracy + +If you are ready to get AntiPiracy set up, all you need to look at is [ThemerConstants.gradle](app/ThemerConstants.gradle)! + +Compile your theme as a SIGNED release APK from Android Studio (Build -> Generate Signed APK). Then launch the signed apk on your device and your log will spit out an error log under the name "SubstratumThemeReport", and you want to copy and paste that into [APK_SIGNATURE_PRODUCTION](app/ThemerConstants.gradle#L13) on line 13. + +**NOTE**: If you are planning to make use of [Google Play App Signing](https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing), **DO NOT** fill the `APK_SIGNATURE_PRODUCTION` field in [ThemerConstants.gradle](app/ThemerConstants.gradle). + +Then you would need to go to Play Developer Console. Then access to your app -> Services and APIs, generate a new API key for your app and then paste it into [BASE_64_LICENSE_KEY](app/ThemerConstants.gradle#L12) on line 12. + +Third, if you would like to change where it checks for various things such as Amazon App Store Enforcement or Play Store Enforcement, you have options listed on line 16 and lines below it, simply change from `true` to `false` and vice versa to make your desired configuration. + +Finally, if you would like to enable intensive mode anti-piracy (App package blacklist), add as many package names as you want under [BLACKLISTED_APPLICATIONS](app/src/main/kotlin/substratum/theme/template/AdvancedConstants.kt#L12) on line 12. Then make sure to enable [ENABLE_APP_BLACKLIST_CHECK](app/ThemerConstants.gradle#L16) on line 16. + +**Under no circumstances should you share your ThemerConstants.gradle file, unless specifically asked by an [official substratum developer](https://github.com/substratum/documentation#team-info-and-responsibilities)**! + +### Encrypted Assets +As of template version 11.0.0, all theme assets are duplicated are encrypted within the APK by default, not your original assets! + +Always use a version control tool listed below to host your private themes! + +BitBucket: https://bitbucket.org/ +GitLab: https://about.gitlab.com/ + +If you want to keep your theme assets unencrypted, just change the value [here](app/ThemerConstants.gradle#L4) to false. + +### Enforcing security +As of template version 11.0.0, themes have an additional check on the build of substratum your users should be running. + +What this means is that themes can ensure their themes ONLY function with our full release cycle with debug and Play Store releases. + +If you would like to enable this feature (only allow your theme to be used with official substratum builds), all you have to do is to flip `true` to `false` [here](app/ThemerConstants.gradle#L20)! + +### Now what? +Nothing. Now you're set to publish your theme! + +## Written with ❤ from themers and developers alike! \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..e55afb0 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,3 @@ +/build +/src/main/assets-temp +/src/main/jni/LoadingProcess.h \ No newline at end of file diff --git a/app/ThemerConstants.gradle b/app/ThemerConstants.gradle new file mode 100644 index 0000000..be5379a --- /dev/null +++ b/app/ThemerConstants.gradle @@ -0,0 +1,21 @@ +ext { + // Whether the theme assets should be encrypted or not, + // this makes it harder for pirates and kangers! (DEFAULT: true) + SHOULD_ENCRYPT_ASSETS = true + + // Whether this theme supports third party theme systems, we will not be able to help you debug + // your themes on external theming systems, so the team will NOT respond to external systems if + // there are issues with your theme (DEFAULT: false) + SUPPORTS_THIRD_PARTY_SYSTEMS = false + + // Play Store AntiPiracy LVL configurations + BASE_64_LICENSE_KEY = "" + APK_SIGNATURE_PRODUCTION = "" + + // Piracy library configurations + ENABLE_APP_BLACKLIST_CHECK = false + ENFORCE_GOOGLE_PLAY_INSTALL = false + + // Allow third party substratum builds + ALLOW_THIRD_PARTY_SUBSTRATUM_BUILDS = true +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..23e4c58 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,172 @@ +import groovy.io.FileType + +import javax.crypto.Cipher +import javax.crypto.SecretKey +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.SecretKeySpec + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: 'ThemerConstants.gradle' + +ext { + // Themers: DO NOT MODIFY + byte[] key = new byte[16] + new Random().nextBytes(key) + KEY = key + byte[] iv = new byte[16] + new Random().nextBytes(iv) + IV_KEY = iv +} + +android { + compileSdkVersion 28 + + + defaultConfig { + // If you're planning to change up the package name, ensure you have read the readme + // thoroughly! + applicationId "com.alienator88.lockr" + // We are only supporting Nougat and above, all new changes will incorporate Nougat changes + // to the substratum repo rather than anything lower. Keep targetSdkVersion the same. + minSdkVersion 24 + // Both versions must be changed to increment on Play Store/user's devices + versionCode 2 + versionName "2.0" + + // Themers: DO NOT MODIFY + buildConfigField "boolean", "SUPPORTS_THIRD_PARTY_SYSTEMS", "" + SUPPORTS_THIRD_PARTY_SYSTEMS + buildConfigField "boolean", "ENABLE_APP_BLACKLIST_CHECK", "" + ENABLE_APP_BLACKLIST_CHECK + buildConfigField "boolean", "ALLOW_THIRD_PARTY_SUBSTRATUM_BUILDS", "" + ALLOW_THIRD_PARTY_SUBSTRATUM_BUILDS + buildConfigField "String", "IV_KEY", "\"" + IV_KEY + "\"" + buildConfigField "byte[]", "DECRYPTION_KEY", String.valueOf("\"" + KEY + "\"").replace("\"", "").replace("[", "{").replace("]", "}") + buildConfigField "byte[]", "IV_KEY", String.valueOf("\"" + IV_KEY + "\"").replace("\"", "").replace("[", "{").replace("]", "}") + resValue "string", "encryption_status", (shouldEncrypt() ? "onCompileVerify" : "false") + } + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + + // Themers: DO NOT MODIFY + buildConfigField "boolean", "ENFORCE_GOOGLE_PLAY_INSTALL", "false" + buildConfigField "String", "BASE_64_LICENSE_KEY", "\"\"" + buildConfigField "String", "APK_SIGNATURE_PRODUCTION", "\"\"" + } + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + + // Themers: DO NOT MODIFY + buildConfigField "boolean", "ENFORCE_GOOGLE_PLAY_INSTALL", "" + ENFORCE_GOOGLE_PLAY_INSTALL + buildConfigField "String", "BASE_64_LICENSE_KEY", "\"" + BASE_64_LICENSE_KEY + "\"" + buildConfigField "String", "APK_SIGNATURE_PRODUCTION", "\"" + APK_SIGNATURE_PRODUCTION + "\"" + } + } + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.github.javiersantos:PiracyChecker:1.2.5' + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version") + implementation("androidx.appcompat:appcompat:1.0.2") + implementation 'com.anjlab.android.iab.v3:library:1.1.0' +} + +// Themers: DO NOT MODIFY ANYTHING BELOW +task encryptAssets { + if (!shouldEncrypt()) { + println("Skipping assets encryption...") + return + } + + def tempAssets = new File(getProjectDir(), "/src/main/assets-temp") + if (!tempAssets.exists()) { + println("Encrypting duplicated assets, don't worry, your original assets are safe...") + def list = [] + def dir = new File(getProjectDir(), "/src/main/assets") + dir.eachFileRecurse(FileType.FILES) { file -> + list << file + + FileInputStream fis = new FileInputStream(file) + File fo = new File(file.getAbsolutePath().replace("assets", "assets-temp")) + fo.getParentFile().mkdirs() + FileOutputStream fos = new FileOutputStream(fo) + byte[] buffer = new byte[4096] + int n + while ((n = fis.read(buffer)) != -1) { + fos.write(buffer, 0, n) + } + fis.close() + fos.close() + } + + list.each { + if (it.getAbsolutePath().contains("overlays")) { + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding") + SecretKey secret = new SecretKeySpec(KEY, "AES") + IvParameterSpec iv = new IvParameterSpec(IV_KEY) + + cipher.init(Cipher.ENCRYPT_MODE, secret, iv) + FileInputStream fis = new FileInputStream(it) + FileOutputStream fos = new FileOutputStream(it.getAbsolutePath() + ".enc") + + byte[] input = new byte[64] + int bytesRead + while ((bytesRead = fis.read(input)) != -1) { + byte[] output = cipher.update(input, 0, bytesRead) + if (output != null) { + fos.write(output) + } + } + byte[] output = cipher.doFinal() + if (output != null) { + fos.write(output) + } + fis.close() + fos.flush() + fos.close() + + it.delete() + } + } + } else { + throw new RuntimeException("Old temporary assets found! Try and do a clean project.") + } +} + +project.afterEvaluate { + preBuild.dependsOn encryptAssets +} + +gradle.buildFinished { + def tempAssets = new File(getProjectDir(), "/src/main/assets-temp") + if (tempAssets.exists()) { + println("Cleaning duplicated encrypted assets, not your decrypted assets...") + def encryptedAssets = new File(getProjectDir(), "src/main/assets") + encryptedAssets.deleteDir() + + tempAssets.eachFileRecurse(FileType.FILES) { file -> + FileInputStream fis = new FileInputStream(file) + File fo = new File(file.getAbsolutePath().replace("assets-temp", "assets")) + fo.getParentFile().mkdirs() + FileOutputStream fos = new FileOutputStream(fo) + byte[] buffer = new byte[4096] + int n + while ((n = fis.read(buffer)) != -1) { + fos.write(buffer, 0, n) + } + fis.close() + fos.close() + } + tempAssets.deleteDir() + } +} + +boolean shouldEncrypt() { + ArrayList tasks = project.gradle.startParameter.taskNames + return SHOULD_ENCRYPT_ASSETS && Arrays.toString(tasks).toLowerCase().contains("release") +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..4b8f4fe --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,22 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/Nicholas/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-dontwarn org.apache.** +-keep class com.google.** +-dontwarn com.google.** +-keep public class com.android.vending.licensing.ILicensingService \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..0771d63 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/colors.xml b/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/colors.xml new file mode 100644 index 0000000..8f23c24 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #00ffffff + diff --git a/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/dimens.xml b/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/dimens.xml new file mode 100644 index 0000000..6999c36 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui.statusbars/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + 900000.0dip + 90000.0dip + 90000.0dip + 0.0dip + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable-anydpi/ic_camera_alt_24dp.png b/app/src/main/assets/overlays/com.android.systemui/res/drawable-anydpi/ic_camera_alt_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..65b25adb55f0d752152c6b90503f7ca532eaef45 GIT binary patch literal 14987 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 + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_fingerprint_error.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_fingerprint_error.xml new file mode 100644 index 0000000..50d1ca1 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_fingerprint_error.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_24dp.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_24dp.xml new file mode 100644 index 0000000..73b1cab --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_24dp.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_24dp.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_24dp.xml new file mode 100644 index 0000000..f1916ff --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_24dp.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_fod.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_fod.xml new file mode 100644 index 0000000..891c786 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_lock_open_fod.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_mic_26dp.png b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_mic_26dp.png new file mode 100644 index 0000000000000000000000000000000000000000..65b25adb55f0d752152c6b90503f7ca532eaef45 GIT binary patch literal 14987 zcmeI3&u`;I6vt<&w1T3Z76}9rva%q7!11p*iLE46NxHNWDODS^?TMY(lf-Ib8{28p zo)CxwCnQb?@i%bf!U1vMpWr{(y>JF0l^N%Ulb2)^iRFSOQhvO7^L@|rnKv)K`0LY? z5BGLo-$e-R9UnE$==Tfk{o;N48U3{P7X5lDJi3e#dieo+-$UR3@EStaGp}`#Tr@wj zonVm1ZqO$A@gStL5vuHuL+o6UL~4_+=T~!o{QOH!^4x0fvDs9cVV(56quYp_-=4Ib z+bhR%bNjX3%Gjm>1|-4Kc+mG_dtA+>ac%mW4J$b*oswKta|bM;bkRJO>On*#GhdV) z%_vJHE3cVWSueaV>8e&#R7=qcvZ~ptWviMredTJq^j9TvJN8-Q(KH>ks<~d0gtnrL zMx*@5$OlnZ(JaeSR9(?^na+^o8$ZEg*^eJig3RJHNbE#jn0SFNvADP$43lau#}dt7 z({&BPc_KfavZEB0F%A_iuPPfv%_d(q7_3#s$>BA22Sy~E{9jeg!v+EJTNf5PypkJF*+3D=+rFxxJRY`j1vFE$ND1Nu1KuNaWSv1nX z38^uqtQxYWw^ZHM4BITf#|l$j2r`)oVl-*(yEwtyL|K{(;{>kPx!Ed8Hgh>fvuPju zae{q^95-ro?Rn30ZH<(Tl4%mTLtIxb7zH9@U85^?OSo+~MawMWbdk&QmC%jA8L~p6 zp(h954ICPNULLky!X>BOHe|KvXtJh}l5AOpwoI&Y!Eh{7cgw~s(L%75L?1^U?Mt}7 zFo&(hrOB+ep}W}BWZlqB*}w%u#<-_(m z&dF!Xqcca}OFKx2qnNORSpeAxl`nBC%F<|dS##x7=B;k$ zb_gc%7v!6BjC#c9mH#AEI%{)~IOrrJ9Fc=At&nX_<|OK}42G{LtXKEF|6n6xeEsjX zVY^fHzu1PXik%+zyTq+2vjUzCY`1fh{aij-v(vhI5-YA_cY*YP8j?8(vVcKPQ`Z30ko@J)K%bSs8=#FW71C57YT2U8OHYW1my$ zq8myt`O-xwYSA%aq{p}H*`^ItO rpf&!z{rBD7{tkOR*m;Exqr1Buq~71T7yR1#hS|r5CygIJc=E+RoU + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_phone_24dp.png b/app/src/main/assets/overlays/com.android.systemui/res/drawable/ic_phone_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..65b25adb55f0d752152c6b90503f7ca532eaef45 GIT binary patch literal 14987 zcmeI3&u`;I6vt<&w1T3Z76}9rva%q7!11p*iLE46NxHNWDODS^?TMY(lf-Ib8{28p zo)CxwCnQb?@i%bf!U1vMpWr{(y>JF0l^N%Ulb2)^iRFSOQhvO7^L@|rnKv)K`0LY? z5BGLo-$e-R9UnE$==Tfk{o;N48U3{P7X5lDJi3e#dieo+-$UR3@EStaGp}`#Tr@wj zonVm1ZqO$A@gStL5vuHuL+o6UL~4_+=T~!o{QOH!^4x0fvDs9cVV(56quYp_-=4Ib z+bhR%bNjX3%Gjm>1|-4Kc+mG_dtA+>ac%mW4J$b*oswKta|bM;bkRJO>On*#GhdV) z%_vJHE3cVWSueaV>8e&#R7=qcvZ~ptWviMredTJq^j9TvJN8-Q(KH>ks<~d0gtnrL zMx*@5$OlnZ(JaeSR9(?^na+^o8$ZEg*^eJig3RJHNbE#jn0SFNvADP$43lau#}dt7 z({&BPc_KfavZEB0F%A_iuPPfv%_d(q7_3#s$>BA22Sy~E{9jeg!v+EJTNf5PypkJF*+3D=+rFxxJRY`j1vFE$ND1Nu1KuNaWSv1nX z38^uqtQxYWw^ZHM4BITf#|l$j2r`)oVl-*(yEwtyL|K{(;{>kPx!Ed8Hgh>fvuPju zae{q^95-ro?Rn30ZH<(Tl4%mTLtIxb7zH9@U85^?OSo+~MawMWbdk&QmC%jA8L~p6 zp(h954ICPNULLky!X>BOHe|KvXtJh}l5AOpwoI&Y!Eh{7cgw~s(L%75L?1^U?Mt}7 zFo&(hrOB+ep}W}BWZlqB*}w%u#<-_(m z&dF!Xqcca}OFKx2qnNORSpeAxl`nBC%F<|dS##x7=B;k$ zb_gc%7v!6BjC#c9mH#AEI%{)~IOrrJ9Fc=At&nX_<|OK}42G{LtXKEF|6n6xeEsjX zVY^fHzu1PXik%+zyTq+2vjUzCY`1fh{aij-v(vhI5-YA_cY*YP8j?8(vVcKPQ`Z30ko@J)K%bSs8=#FW71C57YT2U8OHYW1my$ zq8myt`O-xwYSA%aq{p}H*`^ItO rpf&!z{rBD7{tkOR*m;Exqr1Buq~71T7yR1#hS|r5CygIJc=E+RoU + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_off.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_off.xml new file mode 100644 index 0000000..b0b6713 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_off.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_on.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_on.xml new file mode 100644 index 0000000..d4a2f2c --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_draw_on.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml new file mode 100644 index 0000000..a8d31ae --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_error_state_to_fp.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml new file mode 100644 index 0000000..835ac6a --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/drawable/lockscreen_fingerprint_fp_to_error_state.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/values/colors.xml b/app/src/main/assets/overlays/com.android.systemui/res/values/colors.xml new file mode 100644 index 0000000..b648e4b --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #00ffffff + diff --git a/app/src/main/assets/overlays/com.android.systemui/res/values/dimens.xml b/app/src/main/assets/overlays/com.android.systemui/res/values/dimens.xml new file mode 100644 index 0000000..cefa602 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/values/dimens.xml @@ -0,0 +1,8 @@ + + + 0.0dip + 0.0dip + 0.0dip + 0.0dip + 0.0dip + \ No newline at end of file diff --git a/app/src/main/assets/overlays/com.android.systemui/res/values/strings.xml b/app/src/main/assets/overlays/com.android.systemui/res/values/strings.xml new file mode 100644 index 0000000..2ce1d17 --- /dev/null +++ b/app/src/main/assets/overlays/com.android.systemui/res/values/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/kotlin/com/alienator88/lockr/AdvancedConstants.kt b/app/src/main/kotlin/com/alienator88/lockr/AdvancedConstants.kt new file mode 100644 index 0000000..bd6dd8b --- /dev/null +++ b/app/src/main/kotlin/com/alienator88/lockr/AdvancedConstants.kt @@ -0,0 +1,55 @@ +package com.alienator88.lockr + +object AdvancedConstants { + + // Custom message on theme launch, see theme_strings.xml for changing the dialog content + // Set SHOW_DIALOG_REPEATEDLY to true if you want the dialog to be showed on every theme launch + const val SHOW_LAUNCH_DIALOG = true + const val SHOW_DIALOG_REPEATEDLY = true + + // Blacklisted APKs to prevent theme launching, these include simple regex formatting, without + // full regex formatting (e.g. com.android. will block everything that starts with com.android.) + val BLACKLISTED_APPLICATIONS = arrayOf( + "cc.madkite.freedom", + "zone.jasi2169.uretpatcher", + "uret.jasi2169.patcher", + "p.jasi2169.al3", + "com.dimonvideo.luckypatcher", + "com.chelpus.lackypatch", + "com.forpda.lp", + "com.android.vending.billing.InAppBillingService", + "com.android.vending.billing.InAppBillingSorvice", + "com.android.vendinc", + "com.appcake", + "ac.market.store", + "org.sbtools.gamehack", + "com.zune.gamekiller", + "com.aag.killer", + "com.killerapp.gamekiller", + "cn.lm.sq", + "net.schwarzis.game_cih", + "org.creeplays.hack", + "com.baseappfull.fwd", + "com.zmapp", + "com.dv.marketmod.installer", + "org.mobilism.android", + "com.blackmartalpha", + "org.blackmart.market", + "com.happymod.apk" + ) + + // List of all organization theming systems officially supported by the team + val ORGANIZATION_THEME_SYSTEMS = arrayOf( + "projekt.substratum", + "projekt.substratum.debug", + "projekt.substratum.lite", + "projekt.themer" + ) + + // List of other theme systems that are officially unsupported by the team, but fully supported + // by their corresponding organizations + val OTHER_THEME_SYSTEMS = arrayOf( + "com.slimroms.thememanager", + "com.slimroms.omsbackend" + ) +} diff --git a/app/src/main/kotlin/com/alienator88/lockr/SubstratumLauncher.kt b/app/src/main/kotlin/com/alienator88/lockr/SubstratumLauncher.kt new file mode 100644 index 0000000..8302c55 --- /dev/null +++ b/app/src/main/kotlin/com/alienator88/lockr/SubstratumLauncher.kt @@ -0,0 +1,272 @@ +@file:Suppress("ConstantConditionIf") + +package com.alienator88.lockr + +import android.annotation.SuppressLint +import android.app.Activity +import android.app.AlertDialog +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.widget.* +import com.anjlab.android.iab.v3.BillingProcessor +import com.anjlab.android.iab.v3.TransactionDetails +import com.github.javiersantos.piracychecker.* +import com.github.javiersantos.piracychecker.enums.InstallerID +import com.github.javiersantos.piracychecker.utils.apkSignature +import com.alienator88.lockr.AdvancedConstants.ORGANIZATION_THEME_SYSTEMS +import com.alienator88.lockr.AdvancedConstants.OTHER_THEME_SYSTEMS +import com.alienator88.lockr.ThemeFunctions.checkApprovedSignature +import com.alienator88.lockr.ThemeFunctions.getSelfSignature +import com.alienator88.lockr.ThemeFunctions.getSelfVerifiedPirateTools +import com.alienator88.lockr.ThemeFunctions.isCallingPackageAllowed + +/** + * NOTE TO THEMERS + * + * This class is a TEMPLATE of how you should be launching themes. As long as you keep the structure + * of launching themes the same, you can avoid easy script crackers by changing how + * functions/methods are coded, as well as boolean variable placement. + * + * The more you play with this the harder it would be to decompile and crack! + */ + +class SubstratumLauncher : Activity(), BillingProcessor.IBillingHandler { + private var bp: BillingProcessor? = null + + private val debug = false + private val tag = "SubstratumThemeReport" + private val substratumIntentData = "projekt.substratum.THEME" + private val getKeysIntent = "projekt.substratum.GET_KEYS" + private val receiveKeysIntent = "projekt.substratum.RECEIVE_KEYS" + + private val themePiracyCheck by lazy { + if (BuildConfig.ENABLE_APP_BLACKLIST_CHECK) { + getSelfVerifiedPirateTools(applicationContext) + } else { + false + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + /*TODO replace the null with license key from play console (developement tools > service & APIs)*/ + bp = BillingProcessor(this, "ffffffffffffff", this) + + /* STEP 1: Block hijackers */ + val caller = callingActivity!!.packageName + val organizationsSystem = ORGANIZATION_THEME_SYSTEMS.contains(caller) + val supportedSystem = organizationsSystem || OTHER_THEME_SYSTEMS.contains(caller) + if (!BuildConfig.SUPPORTS_THIRD_PARTY_SYSTEMS && !supportedSystem) { + Log.e(tag, "This theme does not support the launching theme system. [HIJACK] ($caller)") + Toast.makeText(this, + String.format(getString(R.string.unauthorized_theme_client_hijack), caller), + Toast.LENGTH_LONG).show() + finish() + } + if (debug) { + Log.d(tag, "'$caller' has been authorized to launch this theme. (Phase 1)") + } + + /* STEP 2: Ensure that our support is added where it belongs */ + val action = intent.action +// val sharedPref = getPreferences(Context.MODE_PRIVATE) + var verified = false + if ((action == substratumIntentData) or (action == getKeysIntent)) { + // Assume this called from organization's app + if (organizationsSystem) { + verified = when { + BuildConfig.ALLOW_THIRD_PARTY_SUBSTRATUM_BUILDS -> true + else -> checkApprovedSignature(this, caller) + } + } + } else { + OTHER_THEME_SYSTEMS + .filter { action?.startsWith(prefix = it, ignoreCase = true) ?: false } + .forEach { _ -> verified = true } + } + if (!verified) { + Log.e(tag, "This theme does not support the launching theme system. ($action)") + Toast.makeText(this, R.string.unauthorized_theme_client, Toast.LENGTH_LONG).show() + finish() + return + } + if (debug) { + Log.d(tag, "'$action' has been authorized to launch this theme. (Phase 2)") + } + + showDialog() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (!bp!!.handleActivityResult(requestCode, resultCode, data)) { + super.onActivityResult(requestCode, resultCode, data) + } + } + + override fun onProductPurchased(productId: String, details: TransactionDetails?) { + + } + + override fun onPurchaseHistoryRestored() { + + } + + override fun onBillingError(errorCode: Int, error: Throwable?) { + + } + + override fun onBillingInitialized() { + + } + + public override fun onDestroy() { + if (bp != null) { + bp!!.release() + } + super.onDestroy() + } + + private fun startAntiPiracyCheck() { + if (BuildConfig.BASE_64_LICENSE_KEY.isEmpty() && debug && !BuildConfig.DEBUG) { + Log.e(tag, apkSignature) + } + + if (!themePiracyCheck) { + piracyChecker { + if (BuildConfig.ENFORCE_GOOGLE_PLAY_INSTALL) { + enableInstallerId(InstallerID.GOOGLE_PLAY) + } + if (BuildConfig.BASE_64_LICENSE_KEY.isNotEmpty()) { + enableGooglePlayLicensing(BuildConfig.BASE_64_LICENSE_KEY) + } + if (BuildConfig.APK_SIGNATURE_PRODUCTION.isNotEmpty()) { + enableSigningCertificate(BuildConfig.APK_SIGNATURE_PRODUCTION) + } + callback { + allow { + val returnIntent = if (intent.action == getKeysIntent) { + Intent(receiveKeysIntent) + } else { + Intent() + } + + val themeName = getString(R.string.ThemeName) + val themeAuthor = getString(R.string.ThemeAuthor) + val themePid = packageName + returnIntent.putExtra("theme_name", themeName) + returnIntent.putExtra("theme_author", themeAuthor) + returnIntent.putExtra("theme_pid", themePid) + returnIntent.putExtra("theme_debug", BuildConfig.DEBUG) + returnIntent.putExtra("theme_piracy_check", themePiracyCheck) + returnIntent.putExtra("encryption_key", BuildConfig.DECRYPTION_KEY) + returnIntent.putExtra("iv_encrypt_key", BuildConfig.IV_KEY) + + val callingPackage = intent.getStringExtra("calling_package_name") + if (!isCallingPackageAllowed(callingPackage)) { + finish() + } else { + returnIntent.`package` = callingPackage + } + + if (intent.action == substratumIntentData) { + setResult(getSelfSignature(applicationContext), returnIntent) + } else if (intent.action == getKeysIntent) { + returnIntent.action = receiveKeysIntent + sendBroadcast(returnIntent) + } + destroy() + finish() + } + doNotAllow { _, _ -> + val parse = String.format( + getString(R.string.toast_unlicensed), + getString(R.string.ThemeName)) + Toast.makeText(this@SubstratumLauncher, parse, Toast.LENGTH_SHORT).show() + destroy() + finish() + } + onError { error -> + Toast.makeText(this@SubstratumLauncher, error.toString(), Toast.LENGTH_LONG) + .show() + destroy() + finish() + } + } + }.start() + } else { + Toast.makeText(this, R.string.unauthorized, Toast.LENGTH_LONG).show() + finish() + } + } + + @SuppressLint("InflateParams") + private fun showDialog() { + + val alertDialog = AlertDialog.Builder(this, R.style.DialogStyle) + .setCancelable(false) + val view = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null) + val title = view.findViewById(R.id.title) as TextView + title.text = getString(R.string.launch_dialog_title) + + /*Buttons*/ + val changelog = view.findViewById(R.id.changelog) as ImageButton + changelog.setImageResource(R.drawable.ic_changelog) + changelog.setOnClickListener { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link_changelog)))) + } + val review = view.findViewById(R.id.playstore) as ImageButton + review.setImageResource(R.drawable.ic_playstore) + review.setOnClickListener { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link_playstore)))) + } + val support = view.findViewById(R.id.ic_support) as ImageButton + support.setImageResource(R.drawable.ic_telegram) + support.setOnClickListener { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link_support)))) + } + val cont = view.findViewById(R.id.button_continue) as Button + cont.setOnClickListener { + startAntiPiracyCheck() + } + val donation = view.findViewById(R.id.donate) as ImageButton + donation.setImageResource(R.drawable.ic_paypal) + donation.setOnClickListener { + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link_paypal)))) + } + /*Checkbox*/ + val myCheckBox = view.findViewById(R.id.myCheckBox) as CheckBox + myCheckBox.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + storeDialogStatus(true) + } else { + storeDialogStatus(false) + } + } + + alertDialog.setView(view) + + if (getDialogStatus()) { + startAntiPiracyCheck() + } else { + alertDialog.show() + } + + } + + private fun storeDialogStatus(isChecked: Boolean) { + val mSharedPreferences = getSharedPreferences("dialog", Context.MODE_PRIVATE) + val mEditor = mSharedPreferences.edit() + mEditor.putBoolean("show_dialog_" + BuildConfig.VERSION_CODE, isChecked) + mEditor.apply() + } + + private fun getDialogStatus(): Boolean { + val mSharedPreferences = getSharedPreferences("dialog", Context.MODE_PRIVATE) + return mSharedPreferences.getBoolean("show_dialog_" + BuildConfig.VERSION_CODE, false) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/alienator88/lockr/ThemeFunctions.kt b/app/src/main/kotlin/com/alienator88/lockr/ThemeFunctions.kt new file mode 100644 index 0000000..8ec82bc --- /dev/null +++ b/app/src/main/kotlin/com/alienator88/lockr/ThemeFunctions.kt @@ -0,0 +1,108 @@ +package com.alienator88.lockr + + +import android.annotation.SuppressLint +import android.content.Context +import android.content.pm.PackageManager +import android.content.pm.Signature +import android.os.RemoteException +import com.alienator88.lockr.AdvancedConstants.BLACKLISTED_APPLICATIONS +import com.alienator88.lockr.AdvancedConstants.ORGANIZATION_THEME_SYSTEMS +import com.alienator88.lockr.AdvancedConstants.OTHER_THEME_SYSTEMS +@Suppress("ConstantConditionIf") +object ThemeFunctions { + + fun isCallingPackageAllowed(packageId: String): Boolean { + if (BuildConfig.SUPPORTS_THIRD_PARTY_SYSTEMS) { + OTHER_THEME_SYSTEMS.contains(packageId) + } + return ORGANIZATION_THEME_SYSTEMS.contains(packageId) + } + + fun getSelfVerifiedPirateTools(context: Context): Boolean { + val pm = context.packageManager + val packages = pm.getInstalledApplications(PackageManager.GET_META_DATA) + val listOfInstalled = arrayListOf() + packages.mapTo(listOfInstalled) { it.packageName } + return BLACKLISTED_APPLICATIONS.any { listOfInstalled.contains(it) } + } + + @Suppress("DEPRECATION") + @SuppressLint("PackageManagerGetSignatures") + fun checkApprovedSignature(context: Context, packageName: String): Boolean { + SIGNATURES.filter { + try { + val pm = context.packageManager + val pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES) + if (pi.signatures != null && pi.signatures.size == 1 + && ((SIGNATURES[0] == pi.signatures[0]) || + (SIGNATURES[1] == pi.signatures[0]))) { + return true + } + return false + } catch (e: RemoteException) { + return false + } + }.forEach { return true } + return false + } + + @Suppress("DEPRECATION") + @SuppressLint("PackageManagerGetSignatures") + fun getSelfSignature(context: Context): Int { + try { + val sigs = context.packageManager.getPackageInfo( + context.packageName, + PackageManager.GET_SIGNATURES + ).signatures + return sigs[0].hashCode() + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + } + + return 0 + } + + // Enforce a way to get official support from the team, by ensuring that only + private val SUBSTRATUM_SIGNATURE = Signature("" + + "308202eb308201d3a003020102020411c02f2f300d06092a864886f70d01010b050030263124302206" + + "03550403131b5375627374726174756d20446576656c6f706d656e74205465616d301e170d31363037" + + "30333032333335385a170d3431303632373032333335385a3026312430220603550403131b53756273" + + "74726174756d20446576656c6f706d656e74205465616d30820122300d06092a864886f70d01010105" + + "000382010f003082010a02820101008855626336f645a335aa5d40938f15db911556385f72f72b5f8b" + + "ad01339aaf82ae2d30302d3f2bba26126e8da8e76a834e9da200cdf66d1d5977c90a4e4172ce455704" + + "a22bbe4a01b08478673b37d23c34c8ade3ec040a704da8570d0a17fce3c7397ea63ebcde3a2a3c7c5f" + + "983a163e4cd5a1fc80c735808d014df54120e2e5708874739e22e5a22d50e1c454b2ae310b480825ab" + + "3d877f675d6ac1293222602a53080f94e4a7f0692b627905f69d4f0bb1dfd647e281cc0695e0733fa3" + + "efc57d88706d4426c4969aff7a177ac2d9634401913bb20a93b6efe60e790e06dad3493776c2c0878c" + + "e82caababa183b494120edde3d823333efd464c8aea1f51f330203010001a321301f301d0603551d0e" + + "04160414203ec8b075d1c9eb9d600100281c3924a831a46c300d06092a864886f70d01010b05000382" + + "01010042d4bd26d535ce2bf0375446615ef5bf25973f61ecf955bdb543e4b6e6b5d026fdcab09fec09" + + "c747fb26633c221df8e3d3d0fe39ce30ca0a31547e9ec693a0f2d83e26d231386ff45f8e4fd5c06095" + + "8681f9d3bd6db5e940b1e4a0b424f5c463c79c5748a14a3a38da4dd7a5499dcc14a70ba82a50be5fe0" + + "82890c89a27e56067d2eae952e0bcba4d6beb5359520845f1fdb7df99868786055555187ba46c69ee6" + + "7fa2d2c79e74a364a8b3544997dc29cc625395e2f45bf8bdb2c9d8df0d5af1a59a58ad08b32cdbec38" + + "19fa49201bb5b5aadeee8f2f096ac029055713b77054e8af07cd61fe97f7365d0aa92d570be98acb89" + + "41b8a2b0053b54f18bfde092eb") + + // Also allow our CI builds + private val SUBSTRATUM_CI_SIGNATURE = Signature("" + + "308201dd30820146020101300d06092a864886f70d010105050030373116301406035504030c0d416e" + + "64726f69642044656275673110300e060355040a0c07416e64726f6964310b30090603550406130255" + + "53301e170d3137303232333036303730325a170d3437303231363036303730325a3037311630140603" + + "5504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b300906" + + "035504061302555330819f300d06092a864886f70d010101050003818d00308189028181008aa6cf56" + + "e3ba4d0921da3baf527529205efbe440e1f351c40603afa5e6966e6a6ef2def780c8be80d189dc6101" + + "935e6f8340e61dc699cfd34d50e37d69bf66fbb58619d0ebf66f22db5dbe240b6087719aa3ceb1c68f" + + "3fa277b8846f1326763634687cc286b0760e51d1b791689fa2d948ae5f31cb8e807e00bd1eb72788b2" + + "330203010001300d06092a864886f70d0101050500038181007b2b7e432bff612367fbb6fdf8ed0ad1" + + "a19b969e4c4ddd8837d71ae2ec0c35f52fe7c8129ccdcdc41325f0bcbc90c38a0ad6fc0c604a737209" + + "17d37421955c47f9104ea56ad05031b90c748b94831969a266fa7c55bc083e20899a13089402be49a5" + + "edc769811adc2b0496a8a066924af9eeb33f8d57d625a5fa150f7bc18e55") + + // Whitelisted signatures + private val SIGNATURES = arrayOf( + SUBSTRATUM_SIGNATURE, + SUBSTRATUM_CI_SIGNATURE + ) +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/heroimage.png b/app/src/main/res/drawable-xxhdpi/heroimage.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cbeed041982ff4b3faa88c2e45856253f38294 GIT binary patch literal 218051 zcmeFa3tUXw`#-*CnwUzAYe^XQ(mlHBGDNN^LXkAd=zdYD&~4)gq0SLGmC7X*sZdF& z=HTE6g(ww`6NRpHzs_&%YG!s*d)N7%^ZUJizyE*E=jCIY*?X;LJp+B1zd_iuh(u0@cx!P6@0+R7T*s+v^QCEBVQ+G?862}U;=d?n(xX1fOj ziA_fS5TJ-CNg!{w{T6dibE6H~Hm=T!)_YucGZcNC-TIo+@zDmC&J0g$s*kgii-)$4 z?%cjRw81s>>-z}bwx^vBqOsEE~?hLA$;!;KBxq6~hDpkjQ&tC1#D-8!82mjKY zYv<|drmdvp?d`4Ty+qN~-Bw9OOG`^hSyf3@RRP?g;Bmmk)7nSD#baK7Bb;_tGCXYD z?cF@>U0tY1yVkp1_j~Hjor`qD{jXn6Py4;Ro?JWzh6M(wgnXl9ik#gr0_~PM>uLeaOQ`{{y`Hx4PJS z>Tw?7`@jqAb?);8H*0qf1_ChMxrnR?!nn>eps+rOYVUEi*^k(9?Mgk+lHwlw zJ=&Uk_c9oJ)if1Ul$CcYEZw82p`fLvu|#3-UTaO&y*A2PDto{fhCI%b33Q;-|Fyk~ zho`lR4P&5nd(b+Ap|N)fW4E$`rmBjH!cyfu$_iRbRMZugs4P`xsH&)`sO$zK9`g8b zt-HG0+uFNWJFWb8V;H6xUT-=|LllfgUH_MBhYnL?uf`I!B{q8$G?i_XffDzsE9_pP zsj8r+zEo9ZiK?asL)DtoHtKOy$Nf#OvG)Lx-~g&mM7s#xnKJeb{*?2Dll>?mzy$)J z7;O*Ny`J9I?u_NO01bM}5#FboaJ-RfU_b?NM2#wAWNl;bg1D$GVx*xD@&?e~IwDm6 zecpBq7d<2xDJW|wsA_KE1S19IrP|8MoYwm8!fs?3K#dlzh^(l`vHP&L>GL}qcZRhm zV-H8Lflv7#(@{cf;bi~+lqqcNtX*swd-RkzgX4U_KRPVyX>CD_rV7%Ee`~$b(!oEq zo`*G{L(cI25893c9#F;NscT2 zU*Magi(&oj{!f_of9{+8C>|X7I8k(Hq}1sTp&)VkcWDAL9mbXzo!}RZ-W}R0pip-yy0oR7XgzuH83B zG+${CGPk~*a;dVGx{lJYU-3U`;OgY+Zt7-j!_WhHR^KD2kNEHI>u5W#Bh@9!OVJ&n zzCt~^$3}avt2>y(>Y*r#_u=3>J@)T*VAyyL4xoJ*&I)T=CDg|{N}!3McO$CTHs}l1 zD?z}A=Cc;$5Hp7p5}pUt$~4wyX#(iCx)KK=G7~xYgZYlt7xgKE2t_0lMj2} zuRp1TxT<65-{oDPdQ)w)1;L*ioU)!g4n4C zu;Jn9Ztc0>nYxGJ#c*;3r3x2MwCKEh2Z;uRK;+8+w8lSzs=!eZvUr)6@iv< zsQ&t&K$ScCRM`J1D5mI%0$6YgGkT&F>6`Ju@a(sEPXO!3=G z%vgnQOIH|CBd}EBrzaB3l-9!o`Ice;F zp}j&eGSpl(?Y|Ih#{C5jyiM*CWfPr7y`N)k)^oBbOBun=!%0D!NicGiIMBS|6iFH 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 Le>Uli{`LO>%ILHY literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/btn_continue.xml b/app/src/main/res/drawable/btn_continue.xml new file mode 100644 index 0000000..595cbba --- /dev/null +++ b/app/src/main/res/drawable/btn_continue.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_donate.xml b/app/src/main/res/drawable/btn_donate.xml new file mode 100644 index 0000000..b937375 --- /dev/null +++ b/app/src/main/res/drawable/btn_donate.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_bg.xml b/app/src/main/res/drawable/dialog_bg.xml new file mode 100644 index 0000000..be79995 --- /dev/null +++ b/app/src/main/res/drawable/dialog_bg.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_changelog.xml b/app/src/main/res/drawable/ic_changelog.xml new file mode 100644 index 0000000..3042ec5 --- /dev/null +++ b/app/src/main/res/drawable/ic_changelog.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_paypal.xml b/app/src/main/res/drawable/ic_paypal.xml new file mode 100644 index 0000000..31a9373 --- /dev/null +++ b/app/src/main/res/drawable/ic_paypal.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable/ic_playstore.xml b/app/src/main/res/drawable/ic_playstore.xml new file mode 100644 index 0000000..5e2620f --- /dev/null +++ b/app/src/main/res/drawable/ic_playstore.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_telegram.xml b/app/src/main/res/drawable/ic_telegram.xml new file mode 100644 index 0000000..bf1ac6a --- /dev/null +++ b/app/src/main/res/drawable/ic_telegram.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/font/exo_2_light.ttf b/app/src/main/res/font/exo_2_light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..252b905999169e39032e218753f327ea286c4fe9 GIT binary patch literal 104148 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/jolly_lodger.ttf b/app/src/main/res/font/jolly_lodger.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cfb3b8c703fe8382a107ac75b28062eb19d30b69 GIT binary patch literal 39800 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ƨ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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/custom_dialog.xml b/app/src/main/res/layout/custom_dialog.xml new file mode 100644 index 0000000..eb997d0 --- /dev/null +++ b/app/src/main/res/layout/custom_dialog.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + +