From 58b50b956b141acd7f60a3ad25110431ff951a84 Mon Sep 17 00:00:00 2001 From: Suprhimp Date: Sat, 25 Apr 2026 00:31:11 +0900 Subject: [PATCH 1/3] Relicense to Apache-2.0 and add third-party attributions - Replace GPL-3.0 with Apache License 2.0 - Add NOTICE file crediting Shizuku, NanoHTTPD, ZXing, AndroidX, Kotlin Coroutines, and scrcpy-inspired techniques - Add "Built with" section across 7 README locales (EN/KO/DE/ES/FR/JA/ZH) - Remove unused 27MB cloudflared binary from jniLibs Co-Authored-By: Claude Opus 4.7 --- CONTRIBUTING.md | 2 +- LICENSE | 874 ++++-------------- NOTICE | 51 + README.de.md | 20 +- README.es.md | 20 +- README.fr.md | 20 +- README.ja.md | 20 +- README.ko.md | 20 +- README.md | 31 +- README.zh-CN.md | 20 +- .../main/jniLibs/arm64-v8a/libcloudflared.so | Bin 28442920 -> 0 bytes 11 files changed, 377 insertions(+), 701 deletions(-) create mode 100644 NOTICE delete mode 100755 app/src/main/jniLibs/arm64-v8a/libcloudflared.so diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ce673cf..8c596a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -56,4 +56,4 @@ Existing translations: en, ko, de, es, fr, ja, nl, no, zh-CN ## License -By contributing, you agree that your contributions will be licensed under the GPL-3.0 License. +By contributing, you agree that your contributions will be licensed under the Apache License 2.0. diff --git a/LICENSE b/LICENSE index f288702..0ae5cf3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,200 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + 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 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 accept 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 2024 Castla + + 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/NOTICE b/NOTICE new file mode 100644 index 0000000..db1ebb4 --- /dev/null +++ b/NOTICE @@ -0,0 +1,51 @@ +Castla +Copyright (C) 2024 Castla + +This product includes software developed by the following third parties. +Their respective licenses are reproduced below or referenced by URL. + +================================================================================ +Shizuku API / Provider + https://github.com/RikkaApps/Shizuku + Copyright (c) 2017 Rikka + Licensed under the Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + +NanoHTTPD + https://github.com/NanoHttpd/nanohttpd + Copyright (c) 2012-2017 elonen, paulsheer, and NanoHTTPD contributors + Licensed under the BSD 3-Clause License + +ZXing ("Zebra Crossing") + https://github.com/zxing/zxing + Copyright (c) 2007-2024 ZXing authors + Licensed under the Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + +AndroidX (Core, AppCompat, Activity, Lifecycle, Compose, Test) + https://developer.android.com/jetpack/androidx + Copyright (c) The Android Open Source Project + Licensed under the Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + +Kotlin Standard Library / Kotlin Coroutines + https://github.com/JetBrains/kotlin + https://github.com/Kotlin/kotlinx.coroutines + Copyright (c) 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors + Licensed under the Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + +================================================================================ +Acknowledgements + +Some privileged-mode techniques used by this project were inspired by the +approach taken in scrcpy (https://github.com/Genymobile/scrcpy, Apache-2.0). +No source code from scrcpy is included. + +================================================================================ +Test-only dependencies (not distributed in release APK) + + JUnit 4 — Eclipse Public License 1.0 + MockK — Apache License 2.0 + Robolectric — MIT / Apache-2.0 + AndroidX Test / UIAutomator — Apache License 2.0 diff --git a/README.de.md b/README.de.md index 3babf03..4c6fca6 100644 --- a/README.de.md +++ b/README.de.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla ist eine kostenlose Open-Source-Lösung, die den Bildschirm deines Androi - **Volle Touch-Steuerung** — Tippe, wische und interagiere direkt vom Tesla-Bildschirm (über Shizuku) - **Audio-Streaming** — Geräteaudio direkt auf Tesla-Lautsprecher streamen (Android 10+) - **100% lokal & privat** — Alle Daten bleiben im WiFi/Hotspot -- **Komplett kostenlos** — Keine Werbung, keine Paywalls. Open Source unter GPL-3.0 +- **Komplett kostenlos** — Keine Werbung, keine Paywalls. Open Source unter Apache-2.0 ## Funktionen @@ -84,6 +84,20 @@ Castla sammelt **keinerlei Daten**. Siehe [Datenschutzerklärung](PRIVACY.md). Auf Ko-fi unterstützen +## Verwendete Open-Source-Projekte + +Castla baut auf großartigen Open-Source-Projekten auf: + +- [Shizuku](https://shizuku.rikka.app/) — privilegierter API-Zugriff ohne Root +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — eingebetteter HTTP-/WebSocket-Server +- [ZXing](https://github.com/zxing/zxing) — QR-Code-Generierung +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — modernes Android-UI-Toolkit +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — asynchrone Streaming-Pipeline + +Einige Techniken des privilegierten Modus wurden von [scrcpy](https://github.com/Genymobile/scrcpy) inspiriert. Es ist kein scrcpy-Quellcode enthalten. + +Siehe [NOTICE](NOTICE) für die vollständige Liste der Drittanbieter-Attributionen. + ## Lizenz -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/README.es.md b/README.es.md index cbeb324..8ac3fa9 100644 --- a/README.es.md +++ b/README.es.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla es una solución gratuita y de código abierto que transmite la pantalla - **Control táctil completo** — Toca, desliza e interactúa directamente desde la pantalla de Tesla (vía Shizuku) - **Streaming de audio** — Audio del dispositivo directo a los altavoces de Tesla (Android 10+) - **100% local y privado** — Todos los datos permanecen en tu WiFi/hotspot -- **Completamente gratis** — Sin anuncios, sin muros de pago. Código abierto bajo GPL-3.0 +- **Completamente gratis** — Sin anuncios, sin muros de pago. Código abierto bajo Apache-2.0 ## Funciones @@ -84,6 +84,20 @@ Castla **no recopila ningún dato**. Ver [Política de Privacidad](PRIVACY.md). Apoyar en Ko-fi +## Construido con + +Castla se apoya en el trabajo de grandes proyectos de código abierto: + +- [Shizuku](https://shizuku.rikka.app/) — acceso a APIs privilegiadas sin root +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — servidor HTTP + WebSocket embebido +- [ZXing](https://github.com/zxing/zxing) — generación de códigos QR +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — toolkit moderno de UI para Android +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — pipeline de streaming asíncrono + +Algunas técnicas del modo privilegiado se inspiraron en [scrcpy](https://github.com/Genymobile/scrcpy). No se incluye código fuente de scrcpy. + +Consulta [NOTICE](NOTICE) para la lista completa de atribuciones de terceros. + ## Licencia -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/README.fr.md b/README.fr.md index dc58971..49f6485 100644 --- a/README.fr.md +++ b/README.fr.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla est une solution gratuite et open source qui diffuse l'écran de votre t - **Contrôle tactile complet** — Touchez, glissez et interagissez directement depuis l'écran Tesla (via Shizuku) - **Streaming audio** — Audio de l'appareil directement sur les haut-parleurs Tesla (Android 10+) - **100% local et privé** — Toutes les données restent sur votre WiFi/hotspot -- **Entièrement gratuit** — Sans pub, sans paywall. Open source sous GPL-3.0 +- **Entièrement gratuit** — Sans pub, sans paywall. Open source sous Apache-2.0 ## Fonctionnalités @@ -84,6 +84,20 @@ Castla **ne collecte aucune donnée**. Voir la [Politique de Confidentialité](P Soutenir sur Ko-fi +## Construit avec + +Castla s'appuie sur d'excellents projets open source : + +- [Shizuku](https://shizuku.rikka.app/) — accès aux API privilégiées sans root +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — serveur HTTP + WebSocket embarqué +- [ZXing](https://github.com/zxing/zxing) — génération de codes QR +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — boîte à outils UI Android moderne +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — pipeline de streaming asynchrone + +Certaines techniques du mode privilégié s'inspirent de [scrcpy](https://github.com/Genymobile/scrcpy). Aucun code source de scrcpy n'est inclus. + +Voir [NOTICE](NOTICE) pour la liste complète des attributions tierces. + ## Licence -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/README.ja.md b/README.ja.md index 35b6042..bd58a11 100644 --- a/README.ja.md +++ b/README.ja.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castlaは、ローカルWiFiネットワーク経由でAndroidスマートフォ - **フルタッチコントロール** — テスラ画面から直接タップ、スワイプ、操作(Shizuku使用) - **オーディオストリーミング** — デバイスオーディオをテスラスピーカーに直接送信(Android 10+) - **100%ローカル&プライベート** — すべてのデータはWiFi/ホットスポット内のみ -- **完全無料** — 広告なし、課金なし。GPL-3.0オープンソース +- **完全無料** — 広告なし、課金なし。Apache-2.0オープンソース ## 機能 @@ -84,6 +84,20 @@ Castlaは**一切のデータを収集しません**。詳細は[プライバシ Ko-fiでサポート +## 使用しているオープンソース + +Castla は素晴らしいオープンソースプロジェクトの上に成り立っています: + +- [Shizuku](https://shizuku.rikka.app/) — root なしで特権 API にアクセス +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — 組み込み HTTP + WebSocket サーバー +- [ZXing](https://github.com/zxing/zxing) — QR コード生成 +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — モダンな Android UI ツールキット +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — 非同期ストリーミングパイプライン + +一部の特権モード手法は [scrcpy](https://github.com/Genymobile/scrcpy) のアプローチから着想を得ています。scrcpy のソースコードは含まれていません。 + +サードパーティの完全な表記については [NOTICE](NOTICE) を参照してください。 + ## ライセンス -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/README.ko.md b/README.ko.md index 02d1be9..e398299 100644 --- a/README.ko.md +++ b/README.ko.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla는 안드로이드 폰의 화면을 로컬 WiFi 네트워크를 통해 - **완전한 터치 컨트롤** — 테슬라 화면에서 직접 터치, 스와이프, 조작 (Shizuku 사용) - **오디오 스트리밍** — 기기 오디오를 테슬라 스피커로 직접 전송 (Android 10+) - **100% 로컬 & 프라이빗** — 모든 데이터는 WiFi/핫스팟 내에서만. 인터넷 전송 제로. -- **완전 무료** — 광고 없음, 결제벽 없음. GPL-3.0 오픈소스. +- **완전 무료** — 광고 없음, 결제벽 없음. Apache-2.0 오픈소스. ## 기능 @@ -100,6 +100,20 @@ Castla 덕분에 드라이브가 즐거워지셨다면 커피 한 잔 사주세 Ko-fi에서 후원 +## 사용된 오픈소스 + +Castla는 훌륭한 오픈소스 프로젝트들의 도움으로 만들어졌습니다: + +- [Shizuku](https://shizuku.rikka.app/) — 루트 없이 특권 API 접근 +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — 내장 HTTP + WebSocket 서버 +- [ZXing](https://github.com/zxing/zxing) — QR 코드 생성 +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — 현대적 Android UI 툴킷 +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — 비동기 스트리밍 파이프라인 + +일부 특권 모드 기법은 [scrcpy](https://github.com/Genymobile/scrcpy)의 접근 방식에서 영감을 받았습니다. scrcpy의 소스 코드는 포함되어 있지 않습니다. + +전체 서드파티 고지는 [NOTICE](NOTICE) 파일을 참조하세요. + ## 라이선스 -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/README.md b/README.md index 2d8241d..f493b1a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla is a free, open-source solution that streams your Android phone's screen - **Full Touch control** — Tap, swipe, and interact with your phone directly from the Tesla screen (via Shizuku). - **Audio streaming** — Stream your device's audio directly to Tesla's speakers (Android 10+). - **100% local & private** — All data stays on your WiFi/hotspot. Zero data is sent to the internet. -- **Completely free** — No ads, no paywalls. Open-source under GPL-3.0. +- **Completely free** — No ads, no paywalls. Open-source under Apache-2.0. ## Features @@ -137,15 +137,30 @@ If Castla made your road trips better and helped you navigate with Waze on the b Support on Ko-fi +## Built with + +Castla stands on the shoulders of great open-source projects: + +- [Shizuku](https://shizuku.rikka.app/) — privileged API access without root +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — embedded HTTP + WebSocket server +- [ZXing](https://github.com/zxing/zxing) — QR code generation +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — modern Android UI toolkit +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — async streaming pipeline + +Some privileged-mode techniques were inspired by [scrcpy](https://github.com/Genymobile/scrcpy). No scrcpy source code is included. + +See [NOTICE](NOTICE) for the full list of third-party attributions. + ## License -This project is licensed under the [GNU General Public License v3.0](LICENSE). +This project is licensed under the [Apache License 2.0](LICENSE). ``` -Copyright (C) 2024 Castla +Copyright 2024 Castla + +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 -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. + http://www.apache.org/licenses/LICENSE-2.0 ``` diff --git a/README.zh-CN.md b/README.zh-CN.md index d71ffb4..08a1f99 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -6,7 +6,7 @@

Latest Release - License + License Ko-fi

@@ -33,7 +33,7 @@ Castla是一款免费开源解决方案,通过本地WiFi网络将安卓手机 - **完整触控** — 直接在特斯拉屏幕上点触、滑动、操控手机(通过Shizuku) - **音频串流** — 将设备音频直接传输到特斯拉扬声器(Android 10+) - **100%本地且私密** — 所有数据仅在WiFi/热点内传输 -- **完全免费** — 无广告、无付费墙。GPL-3.0开源 +- **完全免费** — 无广告、无付费墙。Apache-2.0开源 ## 功能 @@ -84,6 +84,20 @@ Castla **不收集任何数据**。详情请查看 [隐私政策](PRIVACY.md)。 在Ko-fi上支持 +## 使用的开源项目 + +Castla 建立在出色的开源项目之上: + +- [Shizuku](https://shizuku.rikka.app/) — 无需 root 的特权 API 访问 +- [NanoHTTPD](https://github.com/NanoHttpd/nanohttpd) — 嵌入式 HTTP + WebSocket 服务器 +- [ZXing](https://github.com/zxing/zxing) — 二维码生成 +- [AndroidX / Jetpack Compose](https://developer.android.com/jetpack) — 现代 Android UI 工具包 +- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) — 异步流式管道 + +部分特权模式技术受 [scrcpy](https://github.com/Genymobile/scrcpy) 启发。本项目未包含 scrcpy 源代码。 + +完整的第三方归属列表请参见 [NOTICE](NOTICE)。 + ## 许可证 -[GNU General Public License v3.0](LICENSE) +[Apache License 2.0](LICENSE) diff --git a/app/src/main/jniLibs/arm64-v8a/libcloudflared.so b/app/src/main/jniLibs/arm64-v8a/libcloudflared.so deleted file mode 100755 index c1eafa99512308d22d763b00376ec52089283f86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28442920 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