• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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