Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
rockbruno committed Jan 13, 2020
1 parent 7cc28fd commit a5b96e4
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 2 deletions.
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.6.5
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.)

Expand Down
2 changes: 1 addition & 1 deletion SOURCEKITISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -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!

0 comments on commit a5b96e4

Please sign in to comment.