diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..57cf282 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.5 diff --git a/README.md b/README.md index bb88876..7680f59 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ If one or more modules/extensions of your app fail to satify these conditions, y 2. No Objective-C classes that call Swift methods (Swift classes that call Objective-C methods are fine, except when interfacing is involved) 4. Latest Swift version and Xcode command line tools (works on all versions, but might have different results due to different SourceKit versions) 5. Make sure your project doesn't contain one of [SourceKit's bugs](SOURCEKITISSUES.md). Although the bugs won't prevent the project from being obfuscated, some of them might require some manual fixing afterwards. -6. Enum and enum elements will be obfuscated, except the enum name suffixed with `CodingKeys`. Make sure the name your the CodingKeys enum ending with `CodingKeys`. +6. Enums that represent `Codable` properties should have the suffix `CodingKeys`. (App Extensions that use `NSExtensionPrincipalClass` or variants in their `Info.plist` (like Rich Notifications/Watch apps) will have such references obfuscated as well, but will assume that you haven't changed them from their default `$(PRODUCT_MODULE_NAME).ClassName` value. If you modified these plists to point to classes in different modules, you'll have to manually change them after running this tool.) diff --git a/SOURCEKITISSUES.md b/SOURCEKITISSUES.md index 28f5834..545a1a7 100644 --- a/SOURCEKITISSUES.md +++ b/SOURCEKITISSUES.md @@ -17,7 +17,7 @@ Bugs that are marked as merged are fixed in the Swift repo, but still bugged in The following types and cases might be working correctly in SourceKit, but are currently disabled for other reasons. - Typealiases and Associated Types: Not always indexed (`typealias Foo = UIImage | extension Foo {}` - Foo is ignored and indexed as UIImage). Note that these can't be reverse-engineered as they are purely an editor thing, so no action is required! -- Enum cases and names: Although they are correctly indexed, some enums like `CodingKeys` are not meant to be changed. This will be activated again once the way to determine if an enum is related to internal frameworks is implemented. +- Enum cases and names ending with `CodingKeys`: We avoid obfuscating Codable enums (otherwise your app wouldn't work), but this is detected by a name having the suffix `CodingKeys`. - **MERGED**: Methods with names under four characters: Operators only get indexed as such if they are declared in a global scope. Since most people use `public static func`, they get indexed as regular methods. To prevent operators from being obfuscated, methods with names shorter than four characters won't get obfuscated. - Properties: Properties are on hold for a while because they break derived `Codable` types. Although the obfuscation works correctly, if you build `Codable` types to work on top of a backend's json, parsing will fail because of the different property name. - Module names: Not implemented yet!