1
- apply plugin : ' com.android.application'
1
+ apply plugin : " com.android.application"
2
+
3
+ import com.android.build.OutputFile
4
+
5
+ /**
6
+ * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
7
+ * and bundleReleaseJsAndAssets).
8
+ * These basically call `react-native bundle` with the correct arguments during the Android build
9
+ * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
10
+ * bundle directly from the development server. Below you can see all the possible configurations
11
+ * and their defaults. If you decide to add a configuration block, make sure to add it before the
12
+ * `apply from: "../../node_modules/react-native/react.gradle"` line.
13
+ *
14
+ * project.ext.react = [
15
+ * // the name of the generated asset file containing your JS bundle
16
+ * bundleAssetName: "index.android.bundle",
17
+ *
18
+ * // the entry file for bundle generation
19
+ * entryFile: "index.android.js",
20
+ *
21
+ * // whether to bundle JS and assets in debug mode
22
+ * bundleInDebug: false,
23
+ *
24
+ * // whether to bundle JS and assets in release mode
25
+ * bundleInRelease: true,
26
+ *
27
+ * // whether to bundle JS and assets in another build variant (if configured).
28
+ * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
29
+ * // The configuration property can be in the following formats
30
+ * // 'bundleIn${productFlavor}${buildType}'
31
+ * // 'bundleIn${buildType}'
32
+ * // bundleInFreeDebug: true,
33
+ * // bundleInPaidRelease: true,
34
+ * // bundleInBeta: true,
35
+ *
36
+ * // the root of your project, i.e. where "package.json" lives
37
+ * root: "../../",
38
+ *
39
+ * // where to put the JS bundle asset in debug mode
40
+ * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
41
+ *
42
+ * // where to put the JS bundle asset in release mode
43
+ * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
44
+ *
45
+ * // where to put drawable resources / React Native assets, e.g. the ones you use via
46
+ * // require('./image.png')), in debug mode
47
+ * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
48
+ *
49
+ * // where to put drawable resources / React Native assets, e.g. the ones you use via
50
+ * // require('./image.png')), in release mode
51
+ * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
52
+ *
53
+ * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
54
+ * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
55
+ * // date; if you have any other folders that you want to ignore for performance reasons (gradle
56
+ * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
57
+ * // for example, you might want to remove it from here.
58
+ * inputExcludes: ["android/**", "ios/**"]
59
+ * ]
60
+ */
61
+
62
+ apply from : " ../../node_modules/react-native/react.gradle"
63
+
64
+ /**
65
+ * Set this to true to create two separate APKs instead of one:
66
+ * - An APK that only works on ARM devices
67
+ * - An APK that only works on x86 devices
68
+ * The advantage is the size of the APK is reduced by about 4MB.
69
+ * Upload all the APKs to the Play Store and people will download
70
+ * the correct one based on the CPU architecture of their device.
71
+ */
72
+ def enableSeparateBuildPerCPUArchitecture = false
73
+
74
+ /**
75
+ * Run Proguard to shrink the Java bytecode in release builds.
76
+ */
77
+ def enableProguardInReleaseBuilds = false
2
78
3
79
android {
4
80
compileSdkVersion 23
@@ -14,16 +90,44 @@ android {
14
90
abiFilters " armeabi-v7a" , " x86"
15
91
}
16
92
}
93
+ splits {
94
+ abi {
95
+ reset()
96
+ enable enableSeparateBuildPerCPUArchitecture
97
+ universalApk false // If true, also generate a universal APK
98
+ include " armeabi-v7a" , " x86"
99
+ }
100
+ }
17
101
buildTypes {
18
102
release {
19
- minifyEnabled false
20
- proguardFiles getDefaultProguardFile(' proguard-android.txt' ), ' proguard-rules.pro'
103
+ minifyEnabled enableProguardInReleaseBuilds
104
+ proguardFiles getDefaultProguardFile(" proguard-android.txt" ), " proguard-rules.pro"
105
+ }
106
+ }
107
+ // applicationVariants are e.g. debug, release
108
+ applicationVariants. all { variant ->
109
+ variant. outputs. each { output ->
110
+ // For each separate APK per architecture, set a unique version code as described here:
111
+ // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
112
+ def versionCodes = [" armeabi-v7a" :1 , " x86" :2 ]
113
+ def abi = output. getFilter(OutputFile . ABI )
114
+ if (abi != null ) { // null for the universal-debug, universal-release variants
115
+ output. versionCodeOverride =
116
+ versionCodes. get(abi) * 1048576 + defaultConfig. versionCode
117
+ }
21
118
}
22
119
}
23
120
}
24
121
25
122
dependencies {
26
- compile fileTree(dir : ' libs' , include : [' *.jar' ])
27
- compile ' com.android.support:appcompat-v7:23.0.1'
28
- compile ' com.facebook.react:react-native:0.12.+'
123
+ compile fileTree(dir : " libs" , include : [" *.jar" ])
124
+ compile " com.android.support:appcompat-v7:23.0.1"
125
+ compile " com.facebook.react:react-native:+" // From node_modules
126
+ }
127
+
128
+ // Run this once to be able to run the application with BUCK
129
+ // puts all compile dependencies into folder libs for BUCK to use
130
+ task copyDownloadableDepsToLibs (type : Copy ) {
131
+ from configurations. compile
132
+ into ' libs'
29
133
}
0 commit comments