@@ -170,162 +170,4 @@ jobs:
170
170
channel : ' stable'
171
171
architecture : x64
172
172
- run : flutter pub get
173
- - run : flutter test
174
-
175
- # Minification Compatibility Test
176
- minification_compatibility_test :
177
- runs-on : ubuntu-latest
178
-
179
- steps :
180
- - name : Checkout code
181
- uses : actions/checkout@v3
182
-
183
- - name : Setup Flutter
184
- uses : subosito/flutter-action@v2
185
- with :
186
- channel : ' stable'
187
- architecture : x64
188
- cache : true
189
-
190
- - name : Setup Java
191
- uses : actions/setup-java@v3
192
- with :
193
- distribution : ' temurin'
194
- java-version : ' 11'
195
-
196
- - name : Install dependencies
197
- run : |
198
- flutter pub get
199
- cd example && flutter pub get
200
-
201
- - name : Create ProGuard rules for example app
202
- run : |
203
- cat > example/android/app/proguard-rules.pro << 'EOF'
204
- # Example app ProGuard rules for minification testing
205
-
206
- # Keep example app classes
207
- -keep class com.optimizely.optimizely_flutter_sdk_example.** { *; }
208
-
209
- # Keep Flutter classes
210
- -keep class io.flutter.app.** { *; }
211
- -keep class io.flutter.plugins.GeneratedPluginRegistrant { *; }
212
-
213
- # Google Play Core (for Flutter engine)
214
- -keep class com.google.android.play.core.** { *; }
215
- -dontwarn com.google.android.play.core.**
216
-
217
- # Additional safety for Optimizely (redundant but safe)
218
- -keep class com.optimizely.** { *; }
219
- -dontwarn com.optimizely.**
220
-
221
- # Jackson JSON
222
- -keep class com.fasterxml.jackson.** { *; }
223
- -dontwarn com.fasterxml.jackson.**
224
-
225
- # Ignore missing classes
226
- -dontwarn javax.mail.**
227
- -dontwarn javax.activation.**
228
- EOF
229
-
230
- - name : Test with minification ENABLED
231
- run : |
232
- echo "🧪 Testing with minifyEnabled = true"
233
-
234
- # Backup original build.gradle
235
- cp example/android/app/build.gradle example/android/app/build.gradle.backup
236
-
237
- # Enable minification and ensure ProGuard rules are referenced
238
- sed -i 's/minifyEnabled false/minifyEnabled true/' example/android/app/build.gradle
239
- sed -i 's/shrinkResources false/shrinkResources true/' example/android/app/build.gradle
240
-
241
- # Ensure ProGuard rules are applied
242
- if ! grep -q "proguardFiles.*proguard-rules.pro" example/android/app/build.gradle; then
243
- sed -i '/minifyEnabled true/a\ proguardFiles getDefaultProguardFile('\''proguard-android-optimize.txt'\''), '\''proguard-rules.pro'\''' example/android/app/build.gradle
244
- fi
245
-
246
- echo "📄 Build configuration with minification:"
247
- grep -A 5 "buildTypes" example/android/app/build.gradle
248
-
249
- # Build release APK
250
- cd example
251
- flutter build apk --release --verbose
252
-
253
- echo "✅ Build successful with minification ENABLED"
254
-
255
- - name : Test with minification DISABLED
256
- run : |
257
- echo "🧪 Testing with minifyEnabled = false"
258
-
259
- # Restore original and disable minification
260
- cp example/android/app/build.gradle.backup example/android/app/build.gradle
261
- sed -i 's/minifyEnabled true/minifyEnabled false/' example/android/app/build.gradle
262
- sed -i 's/shrinkResources true/shrinkResources false/' example/android/app/build.gradle
263
-
264
- echo "📄 Build configuration without minification:"
265
- grep -A 5 "buildTypes" example/android/app/build.gradle
266
-
267
- # Clean and build again
268
- cd example
269
- flutter clean
270
- flutter build apk --release --verbose
271
-
272
- echo "✅ Build successful with minification DISABLED"
273
-
274
- - name : Run unit tests
275
- run : |
276
- echo "🧪 Running unit tests to verify SDK functionality"
277
- flutter test
278
-
279
- - name : Verify APK artifacts
280
- run : |
281
- echo "📱 Checking APK files were created:"
282
- ls -la example/build/app/outputs/apk/release/
283
-
284
- # Check APK size
285
- if [ -f "example/build/app/outputs/apk/release/app-release.apk" ]; then
286
- APK_SIZE=$(stat -c%s example/build/app/outputs/apk/release/app-release.apk 2>/dev/null || stat -f%z example/build/app/outputs/apk/release/app-release.apk)
287
- echo "📊 Final APK Size: $(($APK_SIZE / 1024 / 1024)) MB"
288
- fi
289
-
290
- - name : Check for ProGuard artifacts
291
- run : |
292
- echo "🔍 Checking for ProGuard/R8 artifacts:"
293
-
294
- # Look for mapping files
295
- if [ -f "example/build/app/outputs/mapping/release/mapping.txt" ]; then
296
- echo "✅ ProGuard mapping file found"
297
- echo "📄 Mapping file size: $(wc -l < example/build/app/outputs/mapping/release/mapping.txt) lines"
298
- else
299
- echo "ℹ️ No mapping file found (expected if minification was disabled)"
300
- fi
301
-
302
- - name : Upload APK artifacts
303
- uses : actions/upload-artifact@v4
304
- with :
305
- name : minification-test-apk
306
- path : |
307
- example/build/app/outputs/apk/release/app-release.apk
308
- example/build/app/outputs/mapping/release/mapping.txt
309
- retention-days : 7
310
-
311
- - name : Report test results
312
- run : |
313
- echo "🎉 Minification compatibility test completed successfully!"
314
- echo "✅ minifyEnabled = true: PASSED"
315
- echo "✅ minifyEnabled = false: PASSED"
316
- echo "✅ Your Optimizely Flutter SDK is minification-compatible!"
317
- echo ""
318
- echo "This confirms that:"
319
- echo " • Library ProGuard rules are working correctly"
320
- echo " • Plugin registration survives minification"
321
- echo " • No critical classes are being stripped"
322
- echo " • Customer's issue should be resolved"
323
-
324
- - name : Cleanup
325
- if : always()
326
- run : |
327
- # Restore original build.gradle if backup exists
328
- if [ -f "example/android/app/build.gradle.backup" ]; then
329
- mv example/android/app/build.gradle.backup example/android/app/build.gradle
330
- echo "✅ Restored original build.gradle"
331
- fi
173
+ - run : flutter test
0 commit comments