mirror of
				https://github.com/topjohnwu/Magisk
				synced 2025-10-30 09:00:52 +01:00 
			
		
		
		
	Compare commits
	
		
			1039 Commits
		
	
	
		
			v20.3
			...
			manager-v8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 2d5cf8a6fe | ||
|   | 290959f74c | ||
|   | 4d9f58ee72 | ||
|   | 9241246de6 | ||
|   | 58a5d52b78 | ||
|   | 2906178ac3 | ||
|   | e0afbb647b | ||
|   | 50be50cf6a | ||
|   | 77a9d3a5bc | ||
|   | f9c7a4c933 | ||
|   | 2b759b84b0 | ||
|   | 1e45c63ea5 | ||
|   | b14a260827 | ||
|   | ade1597e03 | ||
|   | 2739d3cb67 | ||
|   | dc5e78e142 | ||
|   | e9759a5868 | ||
|   | e7ab802498 | ||
|   | 42672c2e27 | ||
|   | e65d61d313 | ||
|   | 076da5c7c4 | ||
|   | 9deaf2507c | ||
|   | 5c114c67de | ||
|   | d904cb0441 | ||
|   | bd1dd9d863 | ||
|   | afebe734b8 | ||
|   | e21a78164e | ||
|   | 1e0f96d0fd | ||
|   | bf650332d8 | ||
|   | f32e0af830 | ||
|   | 4c94f90e5d | ||
|   | ffb4224640 | ||
|   | 89fff4830b | ||
|   | 16e4c67992 | ||
|   | cf47214ee4 | ||
|   | 0feab753fb | ||
|   | d0b6318b90 | ||
|   | 966e23b846 | ||
|   | 5b8a1fc2a7 | ||
|   | 02ea3ca525 | ||
|   | 0632b146b8 | ||
|   | 1b0b180761 | ||
|   | 0d11f73a1d | ||
|   | 533cb8eb58 | ||
|   | 8ac1181e9a | ||
|   | 5ca1892eb0 | ||
|   | e32db6a0e8 | ||
|   | 82fff615d6 | ||
|   | 24a8f0808d | ||
|   | 4a7c3c06bc | ||
|   | da93bbc1fe | ||
|   | fa2dbe981e | ||
|   | ce6cceae8b | ||
|   | 7b26e8b818 | ||
|   | 2da5fcb00b | ||
|   | a079966f97 | ||
|   | 468796c23d | ||
|   | 5833aadef5 | ||
|   | eb261c8026 | ||
|   | a4c48847d1 | ||
|   | 43288be091 | ||
|   | 1ad7a6fe93 | ||
|   | 4e0a3f5e72 | ||
|   | d7c33f647d | ||
|   | 9087207dc0 | ||
|   | 2760f37e6b | ||
|   | 3fa3426032 | ||
|   | 2e4dc91b96 | ||
|   | aaaaa3d044 | ||
|   | 1edc4449d5 | ||
|   | f3cd4da026 | ||
|   | 872c55207c | ||
|   | 339ca6d666 | ||
|   | 4aeac3b8f4 | ||
|   | d625beb7f3 | ||
|   | 735b65c50c | ||
|   | efb1eab327 | ||
|   | 49d4785da0 | ||
|   | 28e65ce383 | ||
|   | c3b6a48373 | ||
|   | a42ebd429b | ||
|   | 8f89010752 | ||
|   | 105a18f719 | ||
|   | eb04ca4c4a | ||
|   | 6092d7ca88 | ||
|   | 66cad101c0 | ||
|   | 0a14f43f9c | ||
|   | 311c1f0dfd | ||
|   | 0499588107 | ||
|   | d4d837a562 | ||
|   | fbcbb20178 | ||
|   | 0914700fc6 | ||
|   | eeced2fb5b | ||
|   | 6509e3d4f5 | ||
|   | 317052604b | ||
|   | 5538f7168c | ||
|   | dcb9e4cd93 | ||
|   | d9382f59bf | ||
|   | 403a0c770a | ||
|   | f0f1cdc501 | ||
|   | 4e272b70ef | ||
|   | 8dc62a0232 | ||
|   | 9225b47568 | ||
|   | d462873e74 | ||
|   | fc19b50290 | ||
|   | 333fe6da0e | ||
|   | 75fcda9f81 | ||
|   | 44ba2a9903 | ||
|   | 2fceb1ad96 | ||
|   | bacb5fa462 | ||
|   | 67f8dc494e | ||
|   | 3e4caabecb | ||
|   | dcd5183b24 | ||
|   | d80c6b42a6 | ||
|   | 64effe9385 | ||
|   | 96dd24e91d | ||
|   | fbb4f85ef0 | ||
|   | 716f06846b | ||
|   | 241f2656fa | ||
|   | e973d49517 | ||
|   | c3bf9a095b | ||
|   | abfc28db32 | ||
|   | 8b5652ced5 | ||
|   | d6dbab53cd | ||
|   | 46de1ed968 | ||
|   | 9bebe07d5a | ||
|   | ee4db43136 | ||
|   | efac220998 | ||
|   | 31026b43f4 | ||
|   | bc3fbe09f5 | ||
|   | 7ac55068db | ||
|   | 6abd9aa8a4 | ||
|   | c91ebfbcc1 | ||
|   | 2f232fc670 | ||
|   | 41f5c8d96c | ||
|   | 4fd04e62af | ||
|   | 63a9a7d643 | ||
|   | a63d6c03fd | ||
|   | fd552e68a9 | ||
|   | de4e26b488 | ||
|   | fa3865e962 | ||
|   | a6950b8aca | ||
|   | 8df96ff664 | ||
|   | 8b29267ad6 | ||
|   | 0ef92a4866 | ||
|   | 85bef8fa96 | ||
|   | ca9f9fee9a | ||
|   | b59e05c63e | ||
|   | 3c0630bfc0 | ||
|   | bf84dd6518 | ||
|   | f575155a41 | ||
|   | bd240ba48c | ||
|   | 106a2bb7df | ||
|   | 82bbbe05b2 | ||
|   | 9956dc0995 | ||
|   | fc76673802 | ||
|   | 17b5291bbb | ||
|   | 9908dfd79a | ||
|   | 2dbaf9595c | ||
|   | 9a16ab1bd7 | ||
|   | 9e5cb6cb91 | ||
|   | 8c19654d20 | ||
|   | d5a7a75d9d | ||
|   | 851b676077 | ||
|   | 765b51285a | ||
|   | 8a338de696 | ||
|   | 8a61ae621d | ||
|   | 60e1e07e87 | ||
|   | e51a3dacb9 | ||
|   | 9a8a27dbb9 | ||
|   | 2eb001876a | ||
|   | b510dc51ac | ||
|   | d7f7508fa2 | ||
|   | e66b0bf3b2 | ||
|   | 0555b73a19 | ||
|   | 877a297de4 | ||
|   | 49559ec0ec | ||
|   | 30e45f863d | ||
|   | 434efec860 | ||
|   | 5022f00a55 | ||
|   | 8aac373ca3 | ||
|   | c3586fe0a5 | ||
|   | 11f254e5e5 | ||
|   | c61ec2465f | ||
|   | fd5ad91d26 | ||
|   | 5c4c391f94 | ||
|   | 4dacffd7a1 | ||
|   | 61599059d5 | ||
|   | f32a29911b | ||
|   | b73d5753f2 | ||
|   | 2eee335b5f | ||
|   | 013a2e1336 | ||
|   | fbaf2bded6 | ||
|   | 38a34a7eeb | ||
|   | 70174e093b | ||
|   | 0333e82e86 | ||
|   | 36a8839cf8 | ||
|   | d0ed6e7fe3 | ||
|   | 72dfbf5e44 | ||
|   | 114a3c037f | ||
|   | 782adc9a9f | ||
|   | e0642b018d | ||
|   | 6bd4006652 | ||
|   | 01efe7a4ea | ||
|   | 7e133b0cf4 | ||
|   | fd808bd51e | ||
|   | b4e8860ee4 | ||
|   | fb3f8605fd | ||
|   | e394445f1b | ||
|   | ca1b0bf1ce | ||
|   | bf5798190d | ||
|   | ca5030a646 | ||
|   | e22324e434 | ||
|   | e46d4ecd3e | ||
|   | 84f92bd661 | ||
|   | b44dcc2da0 | ||
|   | d6062944f1 | ||
|   | 79f549795b | ||
|   | eaf7c3c486 | ||
|   | 1ac379c17a | ||
|   | 51a4dbf263 | ||
|   | 2d91bfd9e6 | ||
|   | e437ffdbae | ||
|   | ccde8b73a2 | ||
|   | 65f88e4ae2 | ||
|   | 354440ee8a | ||
|   | 59106e4f52 | ||
|   | d76c266fbc | ||
|   | 31681c9c5f | ||
|   | 0e5a32b476 | ||
|   | a22a1dd284 | ||
|   | 27c59dbb65 | ||
|   | fb04e32480 | ||
|   | 14a2f63b8b | ||
|   | 9e81db8692 | ||
|   | 1ed67eed35 | ||
|   | abc5457136 | ||
|   | 4b238a9cd0 | ||
|   | f200d472ef | ||
|   | 105b2fc114 | ||
|   | 5ed4071f74 | ||
|   | 551a478fdc | ||
|   | 7c319f5fc3 | ||
|   | 1fcf35ebeb | ||
|   | 6d749a58c6 | ||
|   | 34450cdddd | ||
|   | 846bbb4da1 | ||
|   | d7a26dbf27 | ||
|   | a86d5b3e61 | ||
|   | b2bece9ef6 | ||
|   | f9cbf883ac | ||
|   | 7f225b3973 | ||
|   | 72e7605fce | ||
|   | a4c1ddd9f2 | ||
|   | ddd513110f | ||
|   | e33d623d40 | ||
|   | eec19ba9af | ||
|   | 413b3f394b | ||
|   | 88cee1212b | ||
|   | cf25fa8ed8 | ||
|   | 3f053b8547 | ||
|   | 79aa261ca2 | ||
|   | ac2a9da4c4 | ||
|   | d8b1d79879 | ||
|   | feb0f4b7b5 | ||
|   | 6c8fe46590 | ||
|   | 5e3c9e5022 | ||
|   | f7f821b93c | ||
|   | 36a70e995f | ||
|   | 537ae1a315 | ||
|   | 87b6bf2c26 | ||
|   | 9df6b0618a | ||
|   | c7e30ac63e | ||
|   | f5e547944a | ||
|   | d10680187d | ||
|   | f5aa6a3cf8 | ||
|   | c944277e78 | ||
|   | 2e5402d741 | ||
|   | 24f6024383 | ||
|   | 15b1215972 | ||
|   | 11222c89d4 | ||
|   | 893a8ec8d9 | ||
|   | da2b00de59 | ||
|   | 1276c28e03 | ||
|   | e458215f27 | ||
|   | fee4031d0f | ||
|   | 0835ff88b2 | ||
|   | 2e95d9f07e | ||
|   | fe2388394d | ||
|   | 7fc9b908d4 | ||
|   | 0ed524f173 | ||
|   | aed3ab994e | ||
|   | 5347cedfa6 | ||
|   | 5b28a713e0 | ||
|   | f1fb7404c2 | ||
|   | fc67c0195f | ||
|   | 2f02f9a580 | ||
|   | 07f712a1ce | ||
|   | c7044b0d20 | ||
|   | 15866cfba9 | ||
|   | 4c2570628d | ||
|   | 113eec59f9 | ||
|   | f7abc03dac | ||
|   | ef3f188a2c | ||
|   | dd62fe89f7 | ||
|   | ec2d7d77eb | ||
|   | 6c6368fd81 | ||
|   | ba31c6b625 | ||
|   | cad189d2dc | ||
|   | 7cf3da1b3b | ||
|   | 45fabf8e03 | ||
|   | 2c12fe6eb2 | ||
|   | b41b2283f4 | ||
|   | e8e7cd5008 | ||
|   | 7873433977 | ||
|   | 52d19d3ea2 | ||
|   | 6348d0a6fb | ||
|   | f7a650b9a4 | ||
|   | a97d278bcd | ||
|   | 8647ba4729 | ||
|   | 4631077c49 | ||
|   | 18dab28c32 | ||
|   | 8ffbffddb3 | ||
|   | f191db2fe0 | ||
|   | dc8f0f6feb | ||
|   | 01a43b03bd | ||
|   | 86db0cd2cd | ||
|   | ae6dd50ccd | ||
|   | 77032eced1 | ||
|   | 820427e93b | ||
|   | 89e11c9cc8 | ||
|   | 05cf53fe6f | ||
|   | 97b72a5941 | ||
|   | 7922f65243 | ||
|   | 67f7935421 | ||
|   | 9348c5bad9 | ||
|   | 0f7caa66fb | ||
|   | bd14994eb9 | ||
|   | 08818e8542 | ||
|   | 706eba329d | ||
|   | f6a2b1c882 | ||
|   | c2e6622016 | ||
|   | 53904b0627 | ||
|   | cef14d4576 | ||
|   | 73203a55ca | ||
|   | 397f7326a3 | ||
|   | 4bbd7989dd | ||
|   | a0b47f3ca3 | ||
|   | 89e9e7c176 | ||
|   | ddc2f317ab | ||
|   | 867bab8513 | ||
|   | b1e0c5ff38 | ||
|   | 6dbd9bfb12 | ||
|   | 3c78344812 | ||
|   | 594f268885 | ||
|   | 93d5716414 | ||
|   | 4b8e92f00a | ||
|   | fc6ef7dd57 | ||
|   | c881fd4964 | ||
|   | 4bcc2b2f03 | ||
|   | 6150055a05 | ||
|   | 23a33b4351 | ||
|   | e02386a6ac | ||
|   | 099e703834 | ||
|   | 1ededc637e | ||
|   | 0850bca9d3 | ||
|   | 6d2fd480bf | ||
|   | ddf0c379be | ||
|   | 45b5e89912 | ||
|   | a748d5291a | ||
|   | f5131fae56 | ||
|   | f79a40a67a | ||
|   | 43146b8316 | ||
|   | b71b4bd4e5 | ||
|   | 44895a86b8 | ||
|   | eecb66f4f1 | ||
|   | e7f1c03151 | ||
|   | 56602cb9a3 | ||
|   | 1e2f776b83 | ||
|   | ec3705f2ed | ||
|   | ae0dcabf43 | ||
|   | 6030b00ee2 | ||
|   | a17908f6e1 | ||
|   | cb7148a24c | ||
|   | 2f824f59dc | ||
|   | ad94f10205 | ||
|   | 02b2290b16 | ||
|   | f8a814a588 | ||
|   | 4c4338cc02 | ||
|   | 5675a1ae7d | ||
|   | 0952224c3d | ||
|   | 4e26c10287 | ||
|   | f3e82b9ef1 | ||
|   | e50295d337 | ||
|   | fde78be2b4 | ||
|   | c071ac8973 | ||
|   | 599ee57d39 | ||
|   | 4499cebcd9 | ||
|   | cd6eca1dc2 | ||
|   | 951273f8ef | ||
|   | 51eeb89f67 | ||
|   | 0efa73d96c | ||
|   | 63512b39b2 | ||
|   | f392ade78d | ||
|   | 0236ab887e | ||
|   | d4baae411b | ||
|   | e02e46d0fc | ||
|   | 3c04dab472 | ||
|   | fc1844b4df | ||
|   | 99ef20627a | ||
|   | 4497e0aaca | ||
|   | c3e045e367 | ||
|   | 501d3e6c32 | ||
|   | b27b9c1d18 | ||
|   | f7d3d1eeaf | ||
|   | 0d72a4c8ba | ||
|   | dbdb0a2560 | ||
|   | 18a09703de | ||
|   | bc6a14d30f | ||
|   | 97db49a57b | ||
|   | eca2168685 | ||
|   | 1bcef38739 | ||
|   | aac6ad73da | ||
|   | 122b4d66b6 | ||
|   | 0f8f4e361b | ||
|   | 3733b589ac | ||
|   | 6a2e781db2 | ||
|   | c6569ce022 | ||
|   | a62bdc58cb | ||
|   | 912009494d | ||
|   | a5d7c41d20 | ||
|   | 232ae2a189 | ||
|   | aa8b23105f | ||
|   | c113f854a2 | ||
|   | 87de0e7a0e | ||
|   | 85755e3022 | ||
|   | 02dc1172be | ||
|   | dbf8c41209 | ||
|   | 8c4fd759c6 | ||
|   | 23dc19ad94 | ||
|   | 0c99c4d93f | ||
|   | 8ab045331b | ||
|   | a8d0936e04 | ||
|   | 4e349acb50 | ||
|   | 947e3b06b4 | ||
|   | 5fd574a14f | ||
|   | 03c1053871 | ||
|   | c7ed0ef5eb | ||
|   | 2aede97754 | ||
|   | 9b8a5e9bf3 | ||
|   | 0f910f2d40 | ||
|   | 15f155100c | ||
|   | 2468f5a6c4 | ||
|   | 945a52a99f | ||
|   | 486b2c82a7 | ||
|   | 800b7f4370 | ||
|   | 8ca5a048d6 | ||
|   | 44b7a3c3f1 | ||
|   | 554ebe7206 | ||
|   | d7b87fcb8e | ||
|   | c94f9e1cc9 | ||
|   | 68532fade3 | ||
|   | e219867cdf | ||
|   | 765d5d9729 | ||
|   | 43029f37b1 | ||
|   | 7188462c55 | ||
|   | f9ff814955 | ||
|   | dfbd1305b3 | ||
|   | c9255ab31b | ||
|   | 1e714af3cf | ||
|   | 4c959cd983 | ||
|   | d959c35723 | ||
|   | 69a9d7485b | ||
|   | dcf07ad8c7 | ||
|   | ed6cdb2eb4 | ||
|   | a73e7e9f99 | ||
|   | ab853e1fcf | ||
|   | 37d38b62b1 | ||
|   | f9bb517142 | ||
|   | efe9b867d5 | ||
|   | d9cf33d1ba | ||
|   | ee3028e67d | ||
|   | d810e6c82d | ||
|   | e0a281583d | ||
|   | d739dcac2b | ||
|   | cdd4cb8ec2 | ||
|   | 93ef90cd24 | ||
|   | e165a1e65c | ||
|   | 4066e5bf14 | ||
|   | 4729514a22 | ||
|   | 93aedcfeb7 | ||
|   | 47d18bb896 | ||
|   | 61dafbe06e | ||
|   | 474325da68 | ||
|   | 9317401d57 | ||
|   | 67d746a62c | ||
|   | 2f1f68f12f | ||
|   | 2742edd73f | ||
|   | 834561a5de | ||
|   | 11102b4dd6 | ||
|   | fef2da3c0b | ||
|   | 9820296e92 | ||
|   | dbfde74c1e | ||
|   | b28668e18d | ||
|   | 5f1174de27 | ||
|   | 543ce937ec | ||
|   | 5537b083a8 | ||
|   | 6b0854749f | ||
|   | 09ba4772b8 | ||
|   | 06a1d08465 | ||
|   | d510ead877 | ||
|   | 2968a1559e | ||
|   | cba26eedb5 | ||
|   | 23e74b2781 | ||
|   | ef0277d10e | ||
|   | a623a5b7cc | ||
|   | be8479fdba | ||
|   | e97e6d467c | ||
|   | 75ec890d46 | ||
|   | 871a9c29c8 | ||
|   | a4f903d947 | ||
|   | 1920a52829 | ||
|   | 6e14a727b1 | ||
|   | ea855837df | ||
|   | d05ed0e59c | ||
|   | a9eb443072 | ||
|   | d382b00efd | ||
|   | ef9d077c7f | ||
|   | e4b20abf8e | ||
|   | e9f0a10175 | ||
|   | c3968a26cf | ||
|   | 9371515ecc | ||
|   | a83e055b19 | ||
|   | 6907651756 | ||
|   | fc2d0246e6 | ||
|   | bb9c362bab | ||
|   | 51402e68d2 | ||
|   | 1b8813228b | ||
|   | 922e36cfb0 | ||
|   | edff094626 | ||
|   | aa72a080b0 | ||
|   | 2a93d1c652 | ||
|   | 6b2f23712c | ||
|   | 375ab93ee3 | ||
|   | d5962e9d71 | ||
|   | ffaa264bd3 | ||
|   | ba7cb47383 | ||
|   | 48d417f9af | ||
|   | df4db6bf6b | ||
|   | b8ef491bc7 | ||
|   | ea1ebb8d00 | ||
|   | 91b6d2852a | ||
|   | d7cd1b37f8 | ||
|   | 160ff7bb07 | ||
|   | 31142180cb | ||
|   | 38b0fa04a8 | ||
|   | 29817245ba | ||
|   | 925fe6f152 | ||
|   | 93fd574b75 | ||
|   | 0de88bcbb9 | ||
|   | 0b70bd2b60 | ||
|   | 84ecba4629 | ||
|   | f7142e69b6 | ||
|   | ed7e560849 | ||
|   | 47e50e8511 | ||
|   | 72f6770d61 | ||
|   | 7da35e5468 | ||
|   | 7768274b2f | ||
|   | 33f006655d | ||
|   | 612b51d48f | ||
|   | 8101f3f67d | ||
|   | e3c8d723e3 | ||
|   | 4579825758 | ||
|   | ef91c33f55 | ||
|   | 511d5993df | ||
|   | 9f4958e869 | ||
|   | c07775f5e3 | ||
|   | e261579e72 | ||
|   | cf54cad3ce | ||
|   | a0998009c1 | ||
|   | d6fdbfe9b7 | ||
|   | 07228279a3 | ||
|   | 6877ef790f | ||
|   | a3809648dd | ||
|   | df15606b00 | ||
|   | 4dc0d13688 | ||
|   | 541fa5cb1f | ||
|   | ab9442d4ae | ||
|   | f5c099e9a7 | ||
|   | 9582379e1b | ||
|   | db9a4b31f9 | ||
|   | 409cb06ea0 | ||
|   | 88d917b662 | ||
|   | faf077b494 | ||
|   | ee1f45aa91 | ||
|   | 915fd3020b | ||
|   | 642788abec | ||
|   | 3cd11dd9a0 | ||
|   | bf2c5ce368 | ||
|   | 65c510a211 | ||
|   | 6fbc38d764 | ||
|   | 200bf993d8 | ||
|   | 38af82e152 | ||
|   | fc05f377fb | ||
|   | 5c0e86383c | ||
|   | 64f5ff5475 | ||
|   | 758777111a | ||
|   | b90e0430f8 | ||
|   | 0ce7da1bf6 | ||
|   | e6464c5c7f | ||
|   | c6b3f06b95 | ||
|   | 581419b6a3 | ||
|   | 696ab677be | ||
|   | 0d229dac3b | ||
|   | 3b8ea599f0 | ||
|   | 3e70a61e33 | ||
|   | 76f35d02b7 | ||
|   | 356b417a04 | ||
|   | 56147a80b5 | ||
|   | 91728991d7 | ||
|   | 0f7e59d288 | ||
|   | f33028c645 | ||
|   | f9149ad433 | ||
|   | 0d7474cc88 | ||
|   | 1e7e06d1cc | ||
|   | 8453282fa6 | ||
|   | 40f971d18a | ||
|   | ce7cb1eeae | ||
|   | d2701616da | ||
|   | 10eb159e1b | ||
|   | 36897ceb19 | ||
|   | 9a8274130b | ||
|   | c8d050c3e3 | ||
|   | a46cd63c9d | ||
|   | e9e6eaf079 | ||
|   | cb5897af93 | ||
|   | d701d6eb82 | ||
|   | 470ebb54e2 | ||
|   | 632cab398e | ||
|   | 189c4cc9d8 | ||
|   | 70d5e2dee8 | ||
|   | c586106e51 | ||
|   | ffa85a616a | ||
|   | e5ea3e4a43 | ||
|   | 0492e63862 | ||
|   | 9952387356 | ||
|   | d7653e6e42 | ||
|   | e9fc40d285 | ||
|   | 740559e3bc | ||
|   | 9471577b3b | ||
|   | e85d5e54e2 | ||
|   | 5fb071d80b | ||
|   | 022151fefd | ||
|   | 3b8d2fe8b7 | ||
|   | d51d549a28 | ||
|   | b5ac24f239 | ||
|   | 3ca99005f8 | ||
|   | 0b9f2921d2 | ||
|   | 389501ad0c | ||
|   | 082e4eb05c | ||
|   | 47f885a566 | ||
|   | bc964b8588 | ||
|   | b57b3313e4 | ||
|   | f185cefa11 | ||
|   | 9d256e02d7 | ||
|   | 086c64c0be | ||
|   | 798fe57025 | ||
|   | a03f744648 | ||
|   | 64f35744c4 | ||
|   | b512528148 | ||
|   | fdfa037dca | ||
|   | db4ef1443d | ||
|   | 810468c279 | ||
|   | 8146d0830d | ||
|   | 7e946b040c | ||
|   | 97d24a7d4d | ||
|   | f8bea66313 | ||
|   | dd9129017f | ||
|   | cbe3602cb7 | ||
|   | 1d831d65f3 | ||
|   | c35d020731 | ||
|   | c18db555a4 | ||
|   | 373092af16 | ||
|   | 1a2e157cda | ||
|   | b3bc1a3907 | ||
|   | 4dd8d75cc0 | ||
|   | e5f50bb7e0 | ||
|   | 45d5b4bea6 | ||
|   | ed58cf953a | ||
|   | ec26bc5ab7 | ||
|   | 84e4bd3d41 | ||
|   | 0ecfb63cd6 | ||
|   | ebdd6ec40c | ||
|   | 0586760347 | ||
|   | d535f244ad | ||
|   | 613d46824d | ||
|   | 041355f182 | ||
|   | 6977dc082f | ||
|   | d3dffe8165 | ||
|   | 6812f9d202 | ||
|   | 555e7cc907 | ||
|   | 6180558068 | ||
|   | cf589f8c64 | ||
|   | e864919c0b | ||
|   | c72d83b637 | ||
|   | f2d2f28e23 | ||
|   | a7435dad6d | ||
|   | 793f0b605c | ||
|   | 5b56ca7ffc | ||
|   | 5c988510b3 | ||
|   | 290624844b | ||
|   | 497efc9f5e | ||
|   | 19d76b635c | ||
|   | 4875def31c | ||
|   | 155c0e3609 | ||
|   | 00ea15dc19 | ||
|   | f04c4cb78a | ||
|   | 6e4777692e | ||
|   | 4638fdf2d7 | ||
|   | 0783d385d5 | ||
|   | cf918e7df8 | ||
|   | 1ba9faf35b | ||
|   | 6e48294f2a | ||
|   | dea607b148 | ||
|   | e938e717b0 | ||
|   | 2eed09ef1b | ||
|   | 8a6b3644be | ||
|   | 1d89fe503b | ||
|   | 788db036fd | ||
|   | c38c473e11 | ||
|   | aef1f8f701 | ||
|   | 83f9767254 | ||
|   | 3e0352eee6 | ||
|   | 28faff6425 | ||
|   | d0112f989c | ||
|   | 9c4c310f46 | ||
|   | 7bf7bfb9c6 | ||
|   | fbe776db0b | ||
|   | 1e2de1bb14 | ||
|   | e395c9442f | ||
|   | 30286f0ea5 | ||
|   | 60ee742855 | ||
|   | a913ede48f | ||
|   | 9592583783 | ||
|   | ad49d3ad26 | ||
|   | 21ee73c2a3 | ||
|   | f5d0cc9f32 | ||
|   | b90c65370e | ||
|   | 88920e0546 | ||
|   | d27773de03 | ||
|   | 8abdaeb044 | ||
|   | 9682d2f84a | ||
|   | a86b9e81e9 | ||
|   | a8bb7c68a3 | ||
|   | bdad29adab | ||
|   | fadcfe5f7a | ||
|   | fbd83b5ff3 | ||
|   | c351174fa4 | ||
|   | cc4f99fe28 | ||
|   | b2a9b88fe5 | ||
|   | da06e0ec76 | ||
|   | 851ee81486 | ||
|   | 0dc9f5c324 | ||
|   | 36513c2301 | ||
|   | 3a10597aed | ||
|   | 2291be5d26 | ||
|   | 345c3ef15e | ||
|   | c1dad11cb3 | ||
|   | 12b219e7b2 | ||
|   | f8b48cf18d | ||
|   | 12a9792c7d | ||
|   | ba55e2bc32 | ||
|   | c5e5b70e08 | ||
|   | 327b186240 | ||
|   | 5c1417e276 | ||
|   | 0a2c99f1dc | ||
|   | 836bfbdd02 | ||
|   | b13a35057a | ||
|   | c3e77b1ec1 | ||
|   | fb60bea659 | ||
|   | b2ddba4cbf | ||
|   | 053251d566 | ||
|   | cf161a5dd9 | ||
|   | e4bcdbd0c4 | ||
|   | cae43b26f4 | ||
|   | b95cf9b9a3 | ||
|   | e6f443cb24 | ||
|   | 087ccd69c9 | ||
|   | 7532477a2f | ||
|   | 433ae89e53 | ||
|   | de853a2651 | ||
|   | 47c3045980 | ||
|   | dd50c19ba3 | ||
|   | 707d7b3342 | ||
|   | ba1a2fbce4 | ||
|   | 84f1e78660 | ||
|   | 3490ba0a56 | ||
|   | 1449486958 | ||
|   | 9094cf7ce3 | ||
|   | df0a5b59f8 | ||
|   | 0827044caf | ||
|   | 342ae7c8cd | ||
|   | fc690b9f02 | ||
|   | 22c9d836e0 | ||
|   | 984997e73b | ||
|   | b39f407596 | ||
|   | 615ad0cc5a | ||
|   | fcedd06e72 | ||
|   | 6a2acbe929 | ||
|   | 4cfff40475 | ||
|   | 904948dc7d | ||
|   | 7342509b2e | ||
|   | ed837ba26f | ||
|   | 13262fdb18 | ||
|   | baf18a8762 | ||
|   | c0b56b927f | ||
|   | ea9947081f | ||
|   | e04f943980 | ||
|   | b38e940088 | ||
|   | bc0bb92f7a | ||
|   | 8737be2623 | ||
|   | eb929160b3 | ||
|   | b8b0f257db | ||
|   | 67b5f39df2 | ||
|   | 7e9b3f1a60 | ||
|   | 465aaeff82 | ||
|   | 40c64d50d5 | ||
|   | 89b1fa341b | ||
|   | 3bda7cb26b | ||
|   | 85a350b6c8 | ||
|   | eae4eff92f | ||
|   | 848be8f806 | ||
|   | c79b79b37e | ||
|   | 8a03c366b8 | ||
|   | 37677f389c | ||
|   | 2692234b8c | ||
|   | bfb5d7e5ac | ||
|   | 8c818e707f | ||
|   | 3efea47ca8 | ||
|   | 89da45f9ac | ||
|   | 34a0a00e3c | ||
|   | dec1094a59 | ||
|   | 02e323133d | ||
|   | cb96b536a2 | ||
|   | 627b40799c | ||
|   | 73c4b21285 | ||
|   | 78d7c45be3 | ||
|   | ac5ecf222e | ||
|   | a20594ed48 | ||
|   | cb59cc92a3 | ||
|   | cc7e47bbb6 | ||
|   | 42606162b2 | ||
|   | e82bc1b7bc | ||
|   | 4f0e1c6c61 | ||
|   | 550f6aff7e | ||
|   | 67c50d7504 | ||
|   | 94f0c61619 | ||
|   | 8a86b30fd1 | ||
|   | 6379108a75 | ||
|   | fbeaad077f | ||
|   | 8918113a31 | ||
|   | c5385b5b4c | ||
|   | 35475e1d25 | ||
|   | fb2c292f35 | ||
|   | afc3fb10c7 | ||
|   | 0a239c2fef | ||
|   | f5342a09d3 | ||
|   | f72de687c5 | ||
|   | 833269fd0a | ||
|   | 332c1a6c59 | ||
|   | 0f1f43057e | ||
|   | 784a7a7f24 | ||
|   | 8e34baa59f | ||
|   | 2926772bba | ||
|   | a7f4496db7 | ||
|   | f972f02fff | ||
|   | 1c77e26c05 | ||
|   | 59c5363933 | ||
|   | b744bb0a5a | ||
|   | 0f140b408c | ||
|   | 711799b194 | ||
|   | 2105cacce3 | ||
|   | 9d1d1710eb | ||
|   | c69dcf3e20 | ||
|   | eec5b37da1 | ||
|   | e1bda4ee8b | ||
|   | 54930024f5 | ||
|   | c5f2f63458 | ||
|   | b2b81a5d0f | ||
|   | 265dca3723 | ||
|   | 495e734428 | ||
|   | 82120cf47f | ||
|   | 027a5695f2 | ||
|   | d6d82edff5 | ||
|   | a12eb3fc6f | ||
|   | 6c84574366 | ||
|   | bc5cbe9fba | ||
|   | f83f92d3fa | ||
|   | 19fd4dd89c | ||
|   | f941f5c0b0 | ||
|   | c7cad7e4aa | ||
|   | 1c8988d3f7 | ||
|   | 70a3dbe2b0 | ||
|   | efbb3ab25f | ||
|   | b0e7c65504 | ||
|   | b18b044b63 | ||
|   | 8f5f8db717 | ||
|   | 016e28383b | ||
|   | f1427e9279 | ||
|   | 169e9ab5ad | ||
|   | dad52724db | ||
|   | d48e9d5d72 | ||
|   | 24e2c3a5e9 | ||
|   | 064523ef25 | ||
|   | 85f293a44e | ||
|   | 8e412bee5f | ||
|   | 7d5555f82e | ||
|   | 6720725d27 | ||
|   | fe5c65d798 | ||
|   | 253f3cf1ba | ||
|   | db2e48b49f | ||
|   | 5e089451af | ||
|   | 6aa22267f4 | ||
|   | f76c020dd7 | ||
|   | 722fba7805 | ||
|   | 86551909fc | ||
|   | 588e94c11d | ||
|   | 9e66310c28 | ||
|   | 93c422dce6 | ||
|   | 7d6eebdae3 | ||
|   | f11bb609c9 | ||
|   | b910a92731 | ||
|   | ee7d297ca8 | ||
|   | a70c0174e1 | ||
|   | da707afa3f | ||
|   | a41597431c | ||
|   | d0b817381e | ||
|   | 60a2e9b5dc | ||
|   | df3a37b0a3 | ||
|   | 5f4718cd13 | ||
|   | 3cc5cb3123 | ||
|   | 8a2872afa4 | ||
|   | 85941c4729 | ||
|   | 82eeefb544 | ||
|   | f6061ba00e | ||
|   | 9e3afcfe7a | ||
|   | 21f2f86cb8 | ||
|   | 04576ca828 | ||
|   | 067cb0cd9d | ||
|   | 17fb8f2298 | ||
|   | fbfc4e72ca | ||
|   | d2e171eabc | ||
|   | e50094af80 | ||
|   | 93edf72993 | ||
|   | a230d63cf9 | ||
|   | 2bb39bee2f | ||
|   | ce2ca5446a | ||
|   | 8a014ff786 | ||
|   | dc09ec7598 | ||
|   | 27fb0474d5 | ||
|   | 7f0a87742a | ||
|   | 47e236788c | ||
|   | 236ad57608 | ||
|   | 6d03798314 | ||
|   | c954a4f7bc | ||
|   | ba588d1097 | ||
|   | 44f7c9a545 | ||
|   | b910db322b | ||
|   | c44a942fb7 | ||
|   | d713ad3499 | ||
|   | ddf40df649 | ||
|   | 7c6d85221d | ||
|   | b66b82a6e9 | ||
|   | c44b85ea87 | ||
|   | fcbf56e93a | ||
|   | a539ffb188 | ||
|   | 512f533a80 | ||
|   | 96ef9cdbee | ||
|   | 28fcbbcf7b | ||
|   | 0f4326151f | ||
|   | e0e27774ad | ||
|   | 1223b48b2c | ||
|   | d8338f0b48 | ||
|   | 38019f7f42 | ||
|   | 23978ef4d2 | ||
|   | 3b4cb23112 | ||
|   | 974cb1167f | ||
|   | 6ccbc272c6 | ||
|   | 0eb28c3265 | ||
|   | 2daa131fb2 | ||
|   | 51247d36c5 | ||
|   | 37fa227fb5 | ||
|   | 9dd272b357 | ||
|   | 277298feae | ||
|   | ff24bc0b68 | ||
|   | 700c51f95c | ||
|   | 659914afbe | ||
|   | ee06aed94b | ||
|   | af1f5d5ab2 | ||
|   | 4292ddd0ae | ||
|   | 4a68fd65b6 | ||
|   | 0e33632e79 | ||
|   | a9b20dae33 | ||
|   | e595937740 | ||
|   | 72eb584e65 | ||
|   | 8999a57f06 | ||
|   | 8024089bde | ||
|   | 5e01f785ae | ||
|   | d35d1b8860 | ||
|   | 88027f2151 | ||
|   | cd41e7108b | ||
|   | 6da566faff | ||
|   | df7a866617 | ||
|   | 1cc8f13d54 | ||
|   | 086ce63c6c | ||
|   | f1dcecc6cf | ||
|   | fe1ce08a6c | ||
|   | 1d64ddb7f5 | ||
|   | 823b121cc7 | ||
|   | 149d35c687 | ||
|   | 3a18e68751 | ||
|   | 6afcc83955 | ||
|   | 277d8773f2 | ||
|   | f161cf8b0a | ||
|   | dc62ae95a6 | ||
|   | f4ecc315d0 | ||
|   | cb2a1e57fe | ||
|   | 1396faf433 | ||
|   | dc8d2ae683 | ||
|   | 191c7c50b6 | ||
|   | c6725b0518 | ||
|   | 4820a6e01c | ||
|   | 57a9b5bc0c | ||
|   | 8c224da5d5 | ||
|   | 14e49f3c80 | ||
|   | cc8f1adca3 | ||
|   | 122e2f7a8e | ||
|   | b4e1585e2b | ||
|   | a5830599c4 | 
							
								
								
									
										5
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -17,3 +17,8 @@ tools/** binary | ||||
| *.apk binary | ||||
| *.png binary | ||||
| *.jpg binary | ||||
| *.ttf binary | ||||
|  | ||||
| # Help GitHub detect languages | ||||
| native/jni/external/** linguist-vendored | ||||
| native/jni/systemproperties/** linguist-language=C++ | ||||
|   | ||||
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -22,6 +22,9 @@ | ||||
| [submodule "mincrypt"] | ||||
| 	path = native/jni/external/mincrypt | ||||
| 	url = https://github.com/topjohnwu/mincrypt.git | ||||
| [submodule "pcre"] | ||||
| 	path = native/jni/external/pcre | ||||
| 	url = https://android.googlesource.com/platform/external/pcre | ||||
| [submodule "termux-elf-cleaner"] | ||||
| 	path = tools/termux-elf-cleaner | ||||
| 	url = https://github.com/termux/termux-elf-cleaner.git | ||||
|   | ||||
							
								
								
									
										93
									
								
								README.MD
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								README.MD
									
									
									
									
									
								
							| @@ -1,34 +1,70 @@ | ||||
| # Magisk | ||||
|  | ||||
|  | ||||
| [Downloads](https://github.com/topjohnwu/Magisk/releases) \| [Documentation](https://topjohnwu.github.io/Magisk/) \| [XDA Thread](https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445) | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Introduction | ||||
|  | ||||
| Magisk is a suite of open source tools for customizing Android, supporting devices higher than Android 4.2 (API 17). It covers the fundamental parts for Android customization: root, boot scripts, SELinux patches, AVB2.0 / dm-verity / forceencrypt removals etc. | ||||
| Magisk is a suite of open source tools for customizing Android, supporting devices higher than Android 4.2. It covers fundamental parts of Android customization: root, boot scripts, SELinux patches, AVB2.0 / dm-verity / forceencrypt removals etc. | ||||
|  | ||||
| Furthermore, Magisk provides a **Systemless Interface** to alter the system (or vendor) arbitrarily while the actual partitions stay completely intact. With its systemless nature along with several other hacks, Magisk can hide modifications from nearly any system integrity verifications used in banking apps, corporation monitoring apps, game cheat detections, and most importantly [Google's SafetyNet API](https://developer.android.com/training/safetynet/index.html). | ||||
| Here are some feature highlights: | ||||
|  | ||||
| - **MagiskSU**: Provide root access to your device | ||||
| - **Magisk Modules**: Modify read-only partitions by installing modules | ||||
| - **MagiskHide**: Hide Magisk from root detections / system integrity checks | ||||
|  | ||||
| ## Downloads | ||||
|  | ||||
| [](https://github.com/topjohnwu/Magisk/releases/download/manager-v8.0.2/MagiskManager-v8.0.2.apk) | ||||
| [](https://raw.githubusercontent.com/topjohnwu/magisk_files/canary/app-debug.apk) | ||||
| <br> | ||||
| [](https://github.com/topjohnwu/Magisk/releases/tag/v20.4) | ||||
| [](https://github.com/topjohnwu/Magisk/releases/tag/v21.0) | ||||
|  | ||||
| ## Useful Links | ||||
|  | ||||
| - [Installation Instruction](https://topjohnwu.github.io/Magisk/install.html) | ||||
| - [Frequently Asked Questions](https://topjohnwu.github.io/Magisk/faq.html) | ||||
| - [Magisk Documentation](https://topjohnwu.github.io/Magisk/) | ||||
| - [Magisk Troubleshoot Wiki](https://www.didgeridoohan.com/magisk/HomePage) (by [@Didgeridoohan](https://github.com/Didgeridoohan)) | ||||
|  | ||||
| ## Android Version Support | ||||
|  | ||||
| - Android 4.2+: MagiskSU and Magisk Modules Only | ||||
| - Android 4.4+: All core features available | ||||
| - Android 6.0+: Guaranteed MagiskHide support | ||||
| - Android 7.0+: Full MagiskHide protection | ||||
| - Android 9.0+: Magisk Manager stealth mode | ||||
|  | ||||
| ## Bug Reports | ||||
|  | ||||
| **Make sure to install the latest [Canary Build](https://forum.xda-developers.com/apps/magisk/dev-magisk-canary-channel-bleeding-edge-t3839337) before reporting any bugs!** **DO NOT** report bugs that are already fixed upstream. Follow the instructions in the [Canary Channel XDA Thread](https://forum.xda-developers.com/apps/magisk/dev-magisk-canary-channel-bleeding-edge-t3839337), and report a bug either by [opening an issue on GitHub](https://github.com/topjohnwu/Magisk/issues) or directly in the thread. | ||||
| Canary Channels are cutting edge builds for those adventurous. To access canary builds, install the Canary Magisk Manager, switch to the Canary Channel in settings and upgrade. | ||||
|  | ||||
| ## Building Environment Requirements | ||||
| **Only bug reports from Canary builds will be accepted.** | ||||
|  | ||||
| -  Python 3: run `build.py` script | ||||
| -  Java Development Kit (JDK) 8: Compile Magisk Manager and sign zips | ||||
| -  Latest Android SDK: set `ANDROID_HOME` environment variable to the path to Android SDK | ||||
| -  Android NDK: Install NDK along with SDK (`$ANDROID_HOME/ndk-bundle`), or optionally specify a custom path `ANDROID_NDK_HOME` | ||||
| -  (Windows Only) Python package Colorama: Install with `pip install colorama`, used for ANSI color codes | ||||
| For installation issues, upload both boot image and install logs.<br> | ||||
| For Magisk issues, upload boot logcat or dmesg.<br> | ||||
| For Magisk Manager crashes, record and upload the logcat when the crash occurs. | ||||
|  | ||||
| ## Building Notes and Instructions | ||||
| ## Building and Development | ||||
|  | ||||
| -  Clone sources with submodules: `git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git` | ||||
| -  Building is supported on macOS, Linux, and Windows. Official releases are built and tested with [FrankeNDK](https://github.com/topjohnwu/FrankeNDK); point `ANDROID_NDK_HOME` to FrankeNDK if you want to use it for compiling. | ||||
| -  Set configurations in `config.prop`. A sample file `config.prop.sample` is provided as an example. | ||||
| -  Run `build.py` with argument `-h` to see the built-in help message. The `-h` option also works for each supported actions, e.g. `./build.py binary -h` | ||||
| -  By default, `build.py` build binaries and Magisk Manager in debug mode. If you want to build Magisk Manager in release mode (via the `-r, --release` flag), you need a Java Keystore file `release-key.jks` (only `JKS` format is supported) to sign APKs and zips. For more information, check out [Google's Official Documentation](https://developer.android.com/studio/publish/app-signing.html#signing-manually). | ||||
| - Magisk builds on any OS Android Studio supports. Install Android Studio and do the initial setups. | ||||
| - Clone sources: `git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git` | ||||
| - Install Python 3.6+ \ | ||||
| (Windows only: select **'Add Python to PATH'** in installer, and run `pip install colorama` after install) | ||||
| - Configure to use the JDK bundled in Android Studio: | ||||
| 	- macOS: `export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"` | ||||
| 	- Linux: `export PATH="/path/to/androidstudio/jre/bin:$PATH"` | ||||
| 	- Windows: Add `C:\Path\To\Android Studio\jre\bin` to environment variable `PATH` | ||||
| - Set environment variable `ANDROID_SDK_ROOT` to the Android SDK folder (can be found in Android Studio settings) | ||||
| - Run `./build.py ndk` to let the script download and install NDK for you | ||||
| - Set configurations in `config.prop`. A sample `config.prop.sample` is provided. | ||||
| - To start building, run `build.py` to see your options. \ | ||||
| For each action, use `-h` to access help (e.g. `./build.py all -h`) | ||||
| - To start development, open the project in Android Studio. Both app (Kotlin/Java) and native (C++/C) source code can be properly developed using the IDE, but *always* use `build.py` for building. | ||||
| - `build.py` builds in debug mode by default. If you want release builds (with `-r, --release`), you need a Java Keystore to sign APKs and zips. For more information, check [Google's Documentation](https://developer.android.com/studio/publish/app-signing.html#generate-key). | ||||
|  | ||||
| ## Translations | ||||
| ## Translation Contributions | ||||
|  | ||||
| Default string resources for Magisk Manager and its stub APK are located here: | ||||
|  | ||||
| @@ -37,27 +73,6 @@ Default string resources for Magisk Manager and its stub APK are located here: | ||||
|  | ||||
| Translate each and place them in the respective locations (`[module]/src/main/res/values-[lang]/strings.xml`). | ||||
|  | ||||
| ## Signature Verification | ||||
|  | ||||
| Official release zips and APKs are signed with my personal private key. You can verify the key certificate to make sure the binaries you downloaded are not manipulated in anyway. | ||||
|  | ||||
| ``` bash | ||||
| # Use the keytool command from JDK to print certificates | ||||
| keytool -printcert -jarfile <APK or Magisk zip> | ||||
|  | ||||
| # The output should contain the following signature | ||||
| Owner: CN=John Wu, L=Taipei, C=TW | ||||
| Issuer: CN=John Wu, L=Taipei, C=TW | ||||
| Serial number: 50514879 | ||||
| Valid from: Sun Aug 14 13:23:44 EDT 2016 until: Tue Jul 21 13:23:44 EDT 2116 | ||||
| Certificate fingerprints: | ||||
| 	 MD5:  CE:DA:68:C1:E1:74:71:0A:EF:58:89:7D:AE:6E:AB:4F | ||||
| 	 SHA1: DC:0F:2B:61:CB:D7:E9:D3:DB:BE:06:0B:2B:87:0D:46:BB:06:02:11 | ||||
| 	 SHA256: B4:CB:83:B4:DA:D9:9F:99:7D:BE:87:2F:01:3A:A1:6C:14:EE:C4:1D:16:70:21:F3:71:F7:E1:33:0F:27:3E:E6 | ||||
| 	 Signature algorithm name: SHA256withRSA | ||||
| 	 Version: 3 | ||||
| ``` | ||||
|  | ||||
| ## License | ||||
|  | ||||
|     Magisk, including all git submodules are free software: | ||||
|   | ||||
							
								
								
									
										135
									
								
								app/build.gradle
									
									
									
									
									
								
							
							
						
						
									
										135
									
								
								app/build.gradle
									
									
									
									
									
								
							| @@ -1,135 +0,0 @@ | ||||
| apply plugin: 'com.android.application' | ||||
| apply plugin: 'kotlin-android' | ||||
| apply plugin: 'kotlin-android-extensions' | ||||
| apply plugin: 'kotlin-kapt' | ||||
|  | ||||
| kapt { | ||||
|     correctErrorTypes = true | ||||
|     useBuildCache = true | ||||
|     mapDiagnosticLocations = true | ||||
|     javacOptions { | ||||
|         option("-Xmaxerrs", 1000) | ||||
|     } | ||||
| } | ||||
|  | ||||
| android { | ||||
|     defaultConfig { | ||||
|         applicationId 'com.topjohnwu.magisk' | ||||
|         vectorDrawables.useSupportLibrary = true | ||||
|         multiDexEnabled true | ||||
|         versionName props['appVersion'] | ||||
|         versionCode props['appVersionCode'] as Integer | ||||
|     } | ||||
|  | ||||
|     buildTypes { | ||||
|         release { | ||||
|             minifyEnabled true | ||||
|             shrinkResources true | ||||
|             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), | ||||
|                     'proguard-rules.pro', 'proguard-kotlin.pro' | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     dataBinding { | ||||
|         enabled = true | ||||
|     } | ||||
|  | ||||
|     packagingOptions { | ||||
|         exclude '/META-INF/**' | ||||
|         exclude '/androidsupportmultidexversion.txt' | ||||
|         exclude '/org/bouncycastle/**' | ||||
|         exclude '/kotlin/**' | ||||
|         exclude '/kotlinx/**' | ||||
|         exclude '/okhttp3/**' | ||||
|     } | ||||
|  | ||||
|     kotlinOptions { | ||||
|         jvmTarget = '1.8' | ||||
|     } | ||||
| } | ||||
|  | ||||
| androidExtensions { | ||||
|     experimental = true | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     implementation fileTree(include: ['*.jar'], dir: 'libs') | ||||
|     implementation project(':shared') | ||||
|     implementation project(':signing') | ||||
|  | ||||
|     implementation 'com.github.topjohnwu:jtar:1.0.0' | ||||
|     implementation 'com.jakewharton.timber:timber:4.7.1' | ||||
|     implementation 'com.ncapdevi:frag-nav:3.2.0' | ||||
|     implementation 'com.github.pwittchen:reactivenetwork-rx2:3.0.6' | ||||
|  | ||||
|     implementation 'io.reactivex.rxjava2:rxjava:2.2.13' | ||||
|     implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' | ||||
|     implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' | ||||
|  | ||||
|     implementation "org.jetbrains.kotlin:kotlin-stdlib:${vKotlin}" | ||||
|     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${vKotlin}" | ||||
|  | ||||
|     def vBAdapt = '3.1.1' | ||||
|     def bindingAdapter = 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter' | ||||
|     implementation "${bindingAdapter}:${vBAdapt}" | ||||
|     implementation "${bindingAdapter}-recyclerview:${vBAdapt}" | ||||
|  | ||||
|     def vMarkwon = '4.2.0' | ||||
|     implementation "io.noties.markwon:core:${vMarkwon}" | ||||
|     implementation "io.noties.markwon:html:${vMarkwon}" | ||||
|     implementation "io.noties.markwon:image:${vMarkwon}" | ||||
|     implementation 'com.caverock:androidsvg:1.4' | ||||
|  | ||||
|     def vLibsu = '2.5.1' | ||||
|     implementation "com.github.topjohnwu.libsu:core:${vLibsu}" | ||||
|     implementation "com.github.topjohnwu.libsu:io:${vLibsu}" | ||||
|  | ||||
|     def vKoin = '2.0.1' | ||||
|     implementation "org.koin:koin-core:${vKoin}" | ||||
|     implementation "org.koin:koin-android:${vKoin}" | ||||
|     implementation "org.koin:koin-androidx-viewmodel:${vKoin}" | ||||
|  | ||||
|     def vRetrofit = '2.6.2' | ||||
|     implementation "com.squareup.retrofit2:retrofit:${vRetrofit}" | ||||
|     implementation "com.squareup.retrofit2:converter-moshi:${vRetrofit}" | ||||
|     implementation "com.squareup.retrofit2:converter-scalars:${vRetrofit}" | ||||
|     implementation "com.squareup.retrofit2:adapter-rxjava2:${vRetrofit}" | ||||
|  | ||||
|     def vOkHttp = '3.12.6' | ||||
|     implementation "com.squareup.okhttp3:okhttp:${vOkHttp}" | ||||
|     implementation "com.squareup.okhttp3:logging-interceptor:${vOkHttp}" | ||||
|  | ||||
|     def vMoshi = '1.9.2' | ||||
|     implementation "com.squareup.moshi:moshi:${vMoshi}" | ||||
|  | ||||
|     def vKotshi = '2.0.2' | ||||
|     implementation "se.ansman.kotshi:api:${vKotshi}" | ||||
|     kapt "se.ansman.kotshi:compiler:${vKotshi}" | ||||
|  | ||||
|     modules { | ||||
|         module('androidx.room:room-runtime') { | ||||
|             replacedBy('com.github.topjohnwu:room-runtime') | ||||
|         } | ||||
|     } | ||||
|     def vRoom = '2.2.2' | ||||
|     implementation "com.github.topjohnwu:room-runtime:${vRoom}" | ||||
|     implementation "androidx.room:room-rxjava2:${vRoom}" | ||||
|     kapt "androidx.room:room-compiler:${vRoom}" | ||||
|  | ||||
|     def vNav = '2.1.0' | ||||
|     implementation "androidx.navigation:navigation-fragment-ktx:${vNav}" | ||||
|     implementation "androidx.navigation:navigation-ui-ktx:${vNav}" | ||||
|  | ||||
|     implementation 'androidx.biometric:biometric:1.0.0' | ||||
|     implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | ||||
|     implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha03' | ||||
|     implementation 'androidx.preference:preference:1.1.0' | ||||
|     implementation 'androidx.recyclerview:recyclerview:1.1.0' | ||||
|     implementation 'androidx.fragment:fragment-ktx:1.2.0-rc03' | ||||
|     implementation 'androidx.cardview:cardview:1.0.0' | ||||
|     implementation 'androidx.work:work-runtime:2.2.0' | ||||
|     implementation 'androidx.transition:transition:1.3.0-rc02' | ||||
|     implementation 'androidx.multidex:multidex:2.0.1' | ||||
|     implementation 'androidx.core:core-ktx:1.1.0' | ||||
|     implementation 'com.google.android.material:material:1.2.0-alpha02' | ||||
| } | ||||
							
								
								
									
										149
									
								
								app/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								app/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,149 @@ | ||||
| plugins { | ||||
|     id("com.android.application") | ||||
|     kotlin("android") | ||||
|     kotlin("android.extensions") | ||||
|     kotlin("kapt") | ||||
|     id("androidx.navigation.safeargs.kotlin") | ||||
| } | ||||
|  | ||||
| kapt { | ||||
|     correctErrorTypes = true | ||||
|     useBuildCache = true | ||||
|     mapDiagnosticLocations = true | ||||
|     javacOptions { | ||||
|         option("-Xmaxerrs", 1000) | ||||
|     } | ||||
| } | ||||
|  | ||||
| android { | ||||
|     defaultConfig { | ||||
|         applicationId = "com.topjohnwu.magisk" | ||||
|         vectorDrawables.useSupportLibrary = true | ||||
|         multiDexEnabled = true | ||||
|         versionName = Config["appVersion"] | ||||
|         versionCode = Config["appVersionCode"]?.toInt() | ||||
|         buildConfigField("int", "LATEST_MAGISK", Config["versionCode"] ?: "Integer.MAX_VALUE") | ||||
|  | ||||
|         javaCompileOptions.annotationProcessorOptions.arguments( | ||||
|                 mapOf("room.incremental" to "true") | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|     buildTypes { | ||||
|         getByName("release") { | ||||
|             isMinifyEnabled = true | ||||
|             isShrinkResources = true | ||||
|             proguardFiles( | ||||
|                 getDefaultProguardFile("proguard-android-optimize.txt"), | ||||
|                 "proguard-rules.pro" | ||||
|             ) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     buildFeatures { | ||||
|         dataBinding = true | ||||
|     } | ||||
|  | ||||
|     dependenciesInfo { | ||||
|         includeInApk = false | ||||
|         includeInBundle = false | ||||
|     } | ||||
|  | ||||
|     packagingOptions { | ||||
|         exclude("/META-INF/**") | ||||
|         exclude("/org/bouncycastle/**") | ||||
|         exclude("/kotlin/**") | ||||
|         exclude("/kotlinx/**") | ||||
|         exclude("/okhttp3/**") | ||||
|         exclude("/*.txt") | ||||
|         exclude("/*.bin") | ||||
|     } | ||||
|  | ||||
|     kotlinOptions { | ||||
|         jvmTarget = "1.8" | ||||
|     } | ||||
| } | ||||
|  | ||||
| androidExtensions { | ||||
|     isExperimental = true | ||||
| } | ||||
|  | ||||
| val copyUtils = tasks.register("copyUtils", Copy::class) { | ||||
|     from(rootProject.file("scripts/util_functions.sh")) | ||||
|     into("src/main/res/raw") | ||||
| } | ||||
|  | ||||
| tasks["preBuild"]?.dependsOn(copyUtils) | ||||
|  | ||||
| dependencies { | ||||
|     implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) | ||||
|     implementation(kotlin("stdlib")) | ||||
|     implementation(project(":app:shared")) | ||||
|     implementation(project(":app:signing")) | ||||
|  | ||||
|     implementation("com.github.topjohnwu:jtar:1.0.0") | ||||
|     implementation("com.github.topjohnwu:indeterminate-checkbox:1.0.7") | ||||
|     implementation("com.github.topjohnwu:lz4-java:1.7.1") | ||||
|     implementation("com.jakewharton.timber:timber:4.7.1") | ||||
|  | ||||
|     val vBAdapt = "4.0.0" | ||||
|     val bindingAdapter = "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter" | ||||
|     implementation("${bindingAdapter}:${vBAdapt}") | ||||
|     implementation("${bindingAdapter}-recyclerview:${vBAdapt}") | ||||
|  | ||||
|     val vMarkwon = "4.6.0" | ||||
|     implementation("io.noties.markwon:core:${vMarkwon}") | ||||
|     implementation("io.noties.markwon:html:${vMarkwon}") | ||||
|     implementation("io.noties.markwon:image:${vMarkwon}") | ||||
|     implementation("com.caverock:androidsvg:1.4") | ||||
|  | ||||
|     val vLibsu = "3.0.2" | ||||
|     implementation("com.github.topjohnwu.libsu:core:${vLibsu}") | ||||
|     implementation("com.github.topjohnwu.libsu:io:${vLibsu}") | ||||
|  | ||||
|     val vKoin = "2.1.6" | ||||
|     implementation("org.koin:koin-core:${vKoin}") | ||||
|     implementation("org.koin:koin-android:${vKoin}") | ||||
|     implementation("org.koin:koin-androidx-viewmodel:${vKoin}") | ||||
|  | ||||
|     val vRetrofit = "2.9.0" | ||||
|     implementation("com.squareup.retrofit2:retrofit:${vRetrofit}") | ||||
|     implementation("com.squareup.retrofit2:converter-moshi:${vRetrofit}") | ||||
|     implementation("com.squareup.retrofit2:converter-scalars:${vRetrofit}") | ||||
|  | ||||
|     val vOkHttp = "3.12.12" | ||||
|     implementation("com.squareup.okhttp3:okhttp") { | ||||
|         version { | ||||
|             strictly(vOkHttp) | ||||
|         } | ||||
|     } | ||||
|     implementation("com.squareup.okhttp3:logging-interceptor:${vOkHttp}") | ||||
|     implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:${vOkHttp}") | ||||
|  | ||||
|     val vMoshi = "1.11.0" | ||||
|     implementation("com.squareup.moshi:moshi:${vMoshi}") | ||||
|     kapt("com.squareup.moshi:moshi-kotlin-codegen:${vMoshi}") | ||||
|  | ||||
|     val vRoom = "2.3.0-alpha03" | ||||
|     implementation("androidx.room:room-runtime:${vRoom}") | ||||
|     implementation("androidx.room:room-ktx:${vRoom}") | ||||
|     kapt("androidx.room:room-compiler:${vRoom}") | ||||
|  | ||||
|     val vNav: String by rootProject.extra | ||||
|     implementation("androidx.navigation:navigation-fragment-ktx:${vNav}") | ||||
|     implementation("androidx.navigation:navigation-ui-ktx:${vNav}") | ||||
|  | ||||
|     implementation("androidx.biometric:biometric:1.0.1") | ||||
|     implementation("androidx.constraintlayout:constraintlayout:2.0.4") | ||||
|     implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") | ||||
|     implementation("androidx.browser:browser:1.2.0") | ||||
|     implementation("androidx.preference:preference:1.1.1") | ||||
|     implementation("androidx.recyclerview:recyclerview:1.1.0") | ||||
|     implementation("androidx.fragment:fragment-ktx:1.2.5") | ||||
|     implementation("androidx.work:work-runtime-ktx:2.4.0") | ||||
|     implementation("androidx.transition:transition:1.3.1") | ||||
|     implementation("androidx.multidex:multidex:2.0.1") | ||||
|     implementation("androidx.core:core-ktx:1.3.2") | ||||
|     implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.0.0") | ||||
|     implementation("com.google.android.material:material:1.2.1") | ||||
| } | ||||
| @@ -1,20 +0,0 @@ | ||||
| ## So every class is case insensitive to avoid some bizare problems | ||||
| -dontusemixedcaseclassnames | ||||
|  | ||||
| ## If reflection issues come up uncomment this, that should temporarily fix it | ||||
| #-keep class kotlin.** { *; } | ||||
| #-keep class kotlin.Metadata { *; } | ||||
| #-keepclassmembers class kotlin.Metadata { | ||||
| #    public <methods>; | ||||
| #} | ||||
|  | ||||
| ## Never warn about Kotlin, it should work as-is | ||||
| -dontwarn kotlin.** | ||||
|  | ||||
| ## Removes runtime null checks - doesn't really matter if it crashes on kotlin or java NPE | ||||
| -assumenosideeffects class kotlin.jvm.internal.Intrinsics { | ||||
|     static void checkParameterIsNotNull(java.lang.Object, java.lang.String); | ||||
| } | ||||
|  | ||||
| ## Useless option for dex | ||||
| -dontpreverify | ||||
							
								
								
									
										42
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
								
							| @@ -16,33 +16,33 @@ | ||||
| #   public *; | ||||
| #} | ||||
|  | ||||
| # Kotlin | ||||
| -assumenosideeffects class kotlin.jvm.internal.Intrinsics { | ||||
| 	public static void checkExpressionValueIsNotNull(...); | ||||
| 	public static void checkNotNullExpressionValue(...); | ||||
| 	public static void checkReturnedValueIsNotNull(...); | ||||
| 	public static void checkFieldIsNotNull(...); | ||||
| 	public static void checkParameterIsNotNull(...); | ||||
| } | ||||
|  | ||||
| # Stubs | ||||
| -keep class a.* { *; } | ||||
|  | ||||
| # Snet | ||||
| -keepclassmembers class com.topjohnwu.magisk.utils.SafetyNetHelper { *; } | ||||
| -keep,allowobfuscation interface com.topjohnwu.magisk.utils.SafetyNetHelper$Callback | ||||
| -keepclassmembers class * implements com.topjohnwu.magisk.utils.SafetyNetHelper$Callback { | ||||
|   void onResponse(int); | ||||
| -keepclassmembers class com.topjohnwu.magisk.ui.safetynet.SafetyNetHelper { *; } | ||||
| -keep,allowobfuscation interface com.topjohnwu.magisk.ui.safetynet.SafetyNetHelper$Callback | ||||
| -keepclassmembers class * implements com.topjohnwu.magisk.ui.safetynet.SafetyNetHelper$Callback { | ||||
|   void onResponse(org.json.JSONObject); | ||||
| } | ||||
|  | ||||
| # Keep all fragment constructors | ||||
| -keepclassmembers class * extends androidx.fragment.app.Fragment { | ||||
|   public <init>(...); | ||||
| # Strip Timber verbose and debug logging | ||||
| -assumenosideeffects class timber.log.Timber.Tree { | ||||
|   public void v(**); | ||||
|   public void d(**); | ||||
| } | ||||
|  | ||||
| # DelegateWorker | ||||
| -keep,allowobfuscation class * extends com.topjohnwu.magisk.base.DelegateWorker | ||||
|  | ||||
| # BootSigner | ||||
| -keep class a.a { *; } | ||||
|  | ||||
| # Workaround R8 bug | ||||
| -keep,allowobfuscation class com.topjohnwu.magisk.model.receiver.GeneralReceiver | ||||
| -keepclassmembers class a.e { *; } | ||||
|  | ||||
| # Strip logging | ||||
| -assumenosideeffects class timber.log.Timber.Tree { *; } | ||||
|  | ||||
| # Excessive obfuscation | ||||
| -repackageclasses 'a' | ||||
| -repackageclasses | ||||
| -allowaccessmodification | ||||
|  | ||||
| # QOL | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| com.topjohnwu.magisk:color/xxxxxxxx = 0x7f010000 | ||||
| com.topjohnwu.magisk:drawable/xxxxxxxx = 0x7f020000 | ||||
| com.topjohnwu.magisk:string/xxxxxxxx = 0x7f030000 | ||||
| com.topjohnwu.magisk:style/xxxxxxxx = 0x7f040000 | ||||
| com.topjohnwu.magisk:xml/xxxxxxxx = 0x7f050000 | ||||
							
								
								
									
										14
									
								
								app/shared/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								app/shared/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| plugins { | ||||
|     id("com.android.library") | ||||
| } | ||||
|  | ||||
| android { | ||||
|     defaultConfig { | ||||
|         vectorDrawables.useSupportLibrary = true | ||||
|         consumerProguardFiles("proguard-rules.pro") | ||||
|     } | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) | ||||
| } | ||||
| @@ -4,26 +4,14 @@ | ||||
|  | ||||
|     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||||
|     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> | ||||
|     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||||
|  | ||||
|     <application | ||||
|         android:icon="@drawable/ic_launcher" | ||||
|         android:label="Magisk Manager" | ||||
|         android:installLocation="internalOnly" | ||||
|         android:usesCleartextTraffic="true" | ||||
|         android:supportsRtl="true" | ||||
|         android:theme="@android:style/Theme.Translucent.NoTitleBar" | ||||
|         tools:ignore="UnusedAttribute"> | ||||
|  | ||||
|         <activity | ||||
|             android:name="a.r" | ||||
|             android:theme="@android:style/Theme.Translucent.NoTitleBar" | ||||
|             android:process=":remote" /> | ||||
|  | ||||
|         <provider | ||||
|             android:name="a.p" | ||||
|             android:authorities="${applicationId}.provider" | ||||
|             android:exported="false" | ||||
|             android:grantUriPermissions="true"> | ||||
|         </provider> | ||||
|     </application> | ||||
|  | ||||
| </manifest> | ||||
| @@ -4,31 +4,22 @@ import android.content.ContentProvider; | ||||
| import android.content.ContentValues; | ||||
| import android.content.Context; | ||||
| import android.content.pm.ProviderInfo; | ||||
| import android.content.res.XmlResourceParser; | ||||
| import android.database.Cursor; | ||||
| import android.database.MatrixCursor; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.Environment; | ||||
| import android.os.ParcelFileDescriptor; | ||||
| import android.provider.OpenableColumns; | ||||
| import android.text.TextUtils; | ||||
| import android.webkit.MimeTypeMap; | ||||
|  | ||||
| import com.topjohnwu.shared.R; | ||||
|  | ||||
| import org.xmlpull.v1.XmlPullParserException; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.FileNotFoundException; | ||||
| import java.io.IOException; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; | ||||
| import static org.xmlpull.v1.XmlPullParser.START_TAG; | ||||
|  | ||||
| /** | ||||
|  * Modified from androidx.core.content.FileProvider | ||||
|  */ | ||||
| @@ -36,25 +27,12 @@ public class FileProvider extends ContentProvider { | ||||
|     private static final String[] COLUMNS = { | ||||
|             OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE }; | ||||
|  | ||||
|     private static final String TAG_ROOT_PATH = "root-path"; | ||||
|     private static final String TAG_FILES_PATH = "files-path"; | ||||
|     private static final String TAG_CACHE_PATH = "cache-path"; | ||||
|     private static final String TAG_EXTERNAL = "external-path"; | ||||
|     private static final String TAG_EXTERNAL_FILES = "external-files-path"; | ||||
|     private static final String TAG_EXTERNAL_CACHE = "external-cache-path"; | ||||
|     private static final String TAG_EXTERNAL_MEDIA = "external-media-path"; | ||||
|  | ||||
|     private static final String ATTR_NAME = "name"; | ||||
|     private static final String ATTR_PATH = "path"; | ||||
|  | ||||
|     private static final File DEVICE_ROOT = new File("/"); | ||||
|  | ||||
|     private static HashMap<String, PathStrategy> sCache = new HashMap<>(); | ||||
|  | ||||
|     private PathStrategy mStrategy; | ||||
|  | ||||
|     public static ProviderCallHandler callHandler; | ||||
|  | ||||
|     @Override | ||||
|     public boolean onCreate() { | ||||
|         return true; | ||||
| @@ -150,13 +128,6 @@ public class FileProvider extends ContentProvider { | ||||
|         return file.delete() ? 1 : 0; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Bundle call(String method, String arg, Bundle extras) { | ||||
|         if (callHandler != null) | ||||
|             return callHandler.call(getContext(), method, arg, extras); | ||||
|         return Bundle.EMPTY; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public ParcelFileDescriptor openFile(Uri uri, String mode) | ||||
|             throws FileNotFoundException { | ||||
| @@ -171,63 +142,36 @@ public class FileProvider extends ContentProvider { | ||||
|         synchronized (sCache) { | ||||
|             strat = sCache.get(authority); | ||||
|             if (strat == null) { | ||||
|                 try { | ||||
|                     strat = parsePathStrategy(context, authority); | ||||
|                 } catch (IOException e) { | ||||
|                     throw new IllegalArgumentException("Failed to parse xml", e); | ||||
|                 } catch (XmlPullParserException e) { | ||||
|                     throw new IllegalArgumentException("Failed to parse xml", e); | ||||
|                 } | ||||
|                 strat = createPathStrategy(context, authority); | ||||
|                 sCache.put(authority, strat); | ||||
|             } | ||||
|         } | ||||
|         return strat; | ||||
|     } | ||||
|  | ||||
|     private static PathStrategy parsePathStrategy(Context context, String authority) | ||||
|             throws IOException, XmlPullParserException { | ||||
|     private static PathStrategy createPathStrategy(Context context, String authority) { | ||||
|         final SimplePathStrategy strat = new SimplePathStrategy(authority); | ||||
|  | ||||
|         final XmlResourceParser in = context.getResources().getXml(R.xml.file_paths); | ||||
|  | ||||
|         int type; | ||||
|         while ((type = in.next()) != END_DOCUMENT) { | ||||
|             if (type == START_TAG) { | ||||
|                 final String tag = in.getName(); | ||||
|  | ||||
|                 final String name = in.getAttributeValue(null, ATTR_NAME); | ||||
|                 String path = in.getAttributeValue(null, ATTR_PATH); | ||||
|  | ||||
|                 File target = null; | ||||
|                 if (TAG_ROOT_PATH.equals(tag)) { | ||||
|                     target = DEVICE_ROOT; | ||||
|                 } else if (TAG_FILES_PATH.equals(tag)) { | ||||
|                     target = context.getFilesDir(); | ||||
|                 } else if (TAG_CACHE_PATH.equals(tag)) { | ||||
|                     target = context.getCacheDir(); | ||||
|                 } else if (TAG_EXTERNAL.equals(tag)) { | ||||
|                     target = Environment.getExternalStorageDirectory(); | ||||
|                 } else if (TAG_EXTERNAL_FILES.equals(tag)) { | ||||
|                     File[] externalFilesDirs = getExternalFilesDirs(context, null); | ||||
|                     if (externalFilesDirs.length > 0) { | ||||
|                         target = externalFilesDirs[0]; | ||||
|                     } | ||||
|                 } else if (TAG_EXTERNAL_CACHE.equals(tag)) { | ||||
|                     File[] externalCacheDirs = getExternalCacheDirs(context); | ||||
|                     if (externalCacheDirs.length > 0) { | ||||
|                         target = externalCacheDirs[0]; | ||||
|                     } | ||||
|                 } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP | ||||
|                         && TAG_EXTERNAL_MEDIA.equals(tag)) { | ||||
|                     File[] externalMediaDirs = context.getExternalMediaDirs(); | ||||
|                     if (externalMediaDirs.length > 0) { | ||||
|                         target = externalMediaDirs[0]; | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (target != null) { | ||||
|                     strat.addRoot(name, buildPath(target, path)); | ||||
|                 } | ||||
|         strat.addRoot("root_files", buildPath(DEVICE_ROOT, ".")); | ||||
|         strat.addRoot("internal_files", buildPath(context.getFilesDir(), ".")); | ||||
|         strat.addRoot("cache_files", buildPath(context.getCacheDir(), ".")); | ||||
|         strat.addRoot("external_files", buildPath(Environment.getExternalStorageDirectory(), ".")); | ||||
|         { | ||||
|             File[] externalFilesDirs = getExternalFilesDirs(context, null); | ||||
|             if (externalFilesDirs.length > 0) { | ||||
|                 strat.addRoot("external_file_files", buildPath(externalFilesDirs[0], ".")); | ||||
|             } | ||||
|         } | ||||
|         { | ||||
|             File[] externalCacheDirs = getExternalCacheDirs(context); | ||||
|             if (externalCacheDirs.length > 0) { | ||||
|                 strat.addRoot("external_cache_files", buildPath(externalCacheDirs[0], ".")); | ||||
|             } | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | ||||
|             File[] externalMediaDirs = context.getExternalMediaDirs(); | ||||
|             if (externalMediaDirs.length > 0) { | ||||
|                 strat.addRoot("external_media_files", buildPath(externalMediaDirs[0], ".")); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @@ -47,10 +47,9 @@ public class Networking { | ||||
|         } catch (Exception e) { | ||||
|             if (Build.VERSION.SDK_INT < 21) { | ||||
|                 // Failed to update SSL provider, use NoSSLv3SocketFactory on SDK < 21 | ||||
|                 // and return false to notify potential issues | ||||
|                 HttpsURLConnection.setDefaultSSLSocketFactory(new NoSSLv3SocketFactory()); | ||||
|                 return false; | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
							
								
								
									
										35
									
								
								app/signing/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								app/signing/build.gradle.kts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar | ||||
|  | ||||
| plugins { | ||||
|     id("java-library") | ||||
|     id("java") | ||||
|     id("com.github.johnrengelman.shadow") version "6.0.0" | ||||
| } | ||||
|  | ||||
| java { | ||||
|     sourceCompatibility = JavaVersion.VERSION_1_8 | ||||
|     targetCompatibility = JavaVersion.VERSION_1_8 | ||||
| } | ||||
|  | ||||
| val jar by tasks.getting(Jar::class) { | ||||
|     manifest { | ||||
|         attributes["Main-Class"] = "com.topjohnwu.signing.ZipSigner" | ||||
|     } | ||||
| } | ||||
|  | ||||
| val shadowJar by tasks.getting(ShadowJar::class) { | ||||
|     archiveBaseName.set("zipsigner") | ||||
|     archiveClassifier.set(null as String?) | ||||
|     archiveVersion.set("4.0") | ||||
| } | ||||
|  | ||||
| repositories { | ||||
|     jcenter() | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) | ||||
|  | ||||
|     api("org.bouncycastle:bcprov-jdk15on:1.67") | ||||
|     api("org.bouncycastle:bcpkix-jdk15on:1.67") | ||||
| } | ||||
							
								
								
									
										772
									
								
								app/signing/src/main/java/com/topjohnwu/signing/ApkSignerV2.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										772
									
								
								app/signing/src/main/java/com/topjohnwu/signing/ApkSignerV2.java
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user