react-native/local-cli
Jamie Lynch c2fd54fcb2 Enable obfuscation in ProGuard rules by default
Summary:
This PR enables obfuscation in ProGuard by default when creating a new project, and documents how developers can turn obfuscation off if they desire.

The ProGuard phase is currently disabled by default. If a developer wanted to enable ProGuard, the first thing they would see is the following line in their build.gradle file: `def enableProguardInReleaseBuilds = false`

It's really easy to assume that enabling this flag will setup code shrinking and obfuscation, as this is the default behaviour for a completely native Android Studio project, or when running ProGuard from the command line directly.

However, the generated ProGuard rules override the default behaviour. Without visually inspecting the rules file, searching for a mapping file, or analyzing the Dex file classes, this isn't immediately obvious, as the APK will be smaller, and gradle will show the Proguard task as completing.

Personally I find this confusing and really wasn't expecting for obfuscation to be disabled - most Android Error Reporting services allow deobfuscation of stacktraces via mapping files.

1. Create a new project using `react-native init MyProject`
2. Observe that `-dontobfuscate` is commented out

[ANDROID] [MINOR] [ProGuard] - Enables obfuscation by default in newly created projects
Closes https://github.com/facebook/react-native/pull/17754

Differential Revision: D7251680

Pulled By: hramos

fbshipit-source-id: cf9ca7753640643377a51daa4fa9065516197340
2018-03-16 18:56:08 -07:00
..
__mocks__ Update license headers for MIT license 2018-02-16 18:31:53 -08:00
__tests__ @allow-large-files Upgrade xplat/js to Flow v0.66 2018-02-16 20:24:57 -08:00
bundle Allow passing custom configs through the CLI ("js1 run") 2018-02-26 03:48:43 -08:00
core Update additional license headers 2018-03-08 12:10:14 -08:00
dependencies Remove optional parameter from server and enforce empty list everywhere 2018-03-01 05:33:05 -08:00
eject Update license headers for MIT license 2018-02-16 18:31:53 -08:00
generator Update license headers for MIT license 2018-02-16 18:31:53 -08:00
info Update license headers for MIT license 2018-02-16 18:31:53 -08:00
init Update license headers for MIT license 2018-02-16 18:31:53 -08:00
install Update license headers for MIT license 2018-02-16 18:31:53 -08:00
library Use sync fs.mkdir 2018-02-25 21:49:28 -08:00
link Local cli/android/normalize project name 2018-03-16 11:26:01 -07:00
logAndroid Update license headers for MIT license 2018-02-16 18:31:53 -08:00
logIOS Update license headers for MIT license 2018-02-16 18:31:53 -08:00
runAndroid Update license headers for MIT license 2018-02-16 18:31:53 -08:00
runIOS Xcode 9 supports running multiple simulators 2018-02-27 14:11:00 -08:00
server Make the chrome debugger handle dynamic delta ids 2018-03-02 02:55:20 -08:00
templates Enable obfuscation in ProGuard rules by default 2018-03-16 18:56:08 -07:00
upgrade Update license headers for MIT license 2018-02-16 18:31:53 -08:00
util Fix #17610, Add fixtures to metro blacklist 2018-02-16 20:48:15 -08:00
.npmignore npmignore: ignore tests and fixtures 2018-02-27 08:42:14 -08:00
cli.js Update license headers for MIT license 2018-02-16 18:31:53 -08:00
cliEntry.js Update license headers for MIT license 2018-02-16 18:31:53 -08:00
commands.js Update license headers for MIT license 2018-02-16 18:31:53 -08:00
setup_env.bat Update license headers for MIT license 2018-02-16 18:31:53 -08:00
setup_env.sh Update license headers for MIT license 2018-02-16 18:31:53 -08:00
wrong-react-native.js Update license headers for MIT license 2018-02-16 18:31:53 -08:00