1# ArkCompiler Subsystem Changelog 2 3## cl.arkcompiler.1 Change in Default Behavior of Merging Dependency Obfuscation Rules 4 5**Access Level** 6 7Others 8 9**Reason for Change** 10 11The default behavior of merging dependency obfuscation rules during obfuscation causes issues for some developers who were not familiar with the obfuscation mechanism. Some third-party libraries include obfuscation switch options in their **obfuscation.txt** files. When other applications depended on these libraries, it causes application crashes at startup, and developers cannot directly detect that these third-party libraries have introduced obfuscation switches. 12 13**Impact of the Change** 14 15This change requires application adaptation. 16 17Before change: 18 19When compiling a module, the effective obfuscation rules are the result of merging all obfuscation configurations from the current module, dependent modules, and third-party libraries. 20 21For example, if the obfuscation configurations for the current module, a dependent HAR module, and a third-party library are as follows: 22 23``` 24// current-obfuscation-rules.txt 25-enable-toplevel-obfuscation 26-keep-global-name 27currentVar 28 29// dependencyHar-consumer-rule.txt 30-enable-property-obfuscation 31-keep-global-name 32harVar 33-keep-property-name 34harProp 35 36// dependencyThirdParty-obfuscation.txt 37-compact 38-keep-property-name 39thirdPartyProp 40``` 41 42Then the effective obfuscation rules when compiling the current module are as follows: 43 44``` 45-enable-toplevel-obfuscation 46-enable-property-obfuscation 47-compact 48-keep-global-name 49currentVar 50harVar 51-keep-property-name 52harProp 53thirdPartyProp 54``` 55 56After change: 57 58When compiling a module, the effective obfuscation rules are the result of merging the current module's obfuscation configurations with the obfuscation retention options from dependent modules and third-party libraries. 59 60 61For the same example, the effective obfuscation rules when compiling the current module are as follows: 62``` 63-enable-toplevel-obfuscation 64-keep-global-name 65currentVar 66harVar 67-keep-property-name 68harProp 69thirdPartyProp 70``` 71 72**Start API Level** 73 74API 10 75 76**Change Since** 77 78OpenHarmony 5.1.0.46 79 80**Key API/Component Changes** 81 82N/A 83 84**Adaptation Guide** 85 86To achieve the pre-change behavior of merging all obfuscation configurations from dependent modules and third-party libraries when compiling the current module, you can configure the obfuscation switch option **-enable-lib-obfuscation-options** in the current module's obfuscation configuration file **obfuscation-rules.txt**. 87