From ae344111912d99062b97c6f59af5eae9d279efc4 Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Mon, 10 Aug 2026 17:30:07 +0200 Subject: [PATCH 1/5] fix: include .jbroot in published package Pub strips dot-directories by default, which dropped the signed framework probe data and invalidated the iOS xcframework. Co-authored-by: Cursor --- .pubignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.pubignore b/.pubignore index 01ad605..e6594ca 100644 --- a/.pubignore +++ b/.pubignore @@ -1,3 +1,8 @@ .agents/ .cursor/ -example/ \ No newline at end of file +example/ + +# Pub ignores dot-directories by default (.*). Re-include the signed +# framework probe data so the published iOS xcframework stays valid. +!.jbroot/ +!.jbroot/** From be367af9ac0f1a682a0d1df6ee4088bfec9cfba3 Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Mon, 10 Aug 2026 17:40:47 +0200 Subject: [PATCH 2/5] fix: trim published package and scope ProGuard flatten rule Ship a minimal example for pub.dev scoring, exclude tests/pigeons/build outputs, and keep -flattenpackagehierarchy plugin-local so AGP 8+ consumers are not broken. Co-authored-by: Cursor --- .pubignore | 13 ++++++++++++- android/build.gradle | 9 ++++++++- android/consumer-rules.pro | 1 - android/proguard-rules.pro | 1 + example/main.dart | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) delete mode 100644 android/consumer-rules.pro create mode 100644 android/proguard-rules.pro create mode 100644 example/main.dart diff --git a/.pubignore b/.pubignore index e6594ca..b94cf2e 100644 --- a/.pubignore +++ b/.pubignore @@ -1,7 +1,18 @@ .agents/ .cursor/ -example/ +# Root .pubignore replaces root .gitignore for publish — keep build +# outputs and lockfiles out of the package. +build/ +/pubspec.lock + +# Publish only a minimal example for pub.dev scoring; keep the full +# Flutter demo app (android/, ios/, lib/, …) out of the package. +example/* +!example/main.dart + +test/ +pigeons/ # Pub ignores dot-directories by default (.*). Re-include the signed # framework probe data so the published iOS xcframework stays valid. !.jbroot/ diff --git a/android/build.gradle b/android/build.gradle index 9f884f8..74ac9a3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -49,7 +49,14 @@ android { defaultConfig { minSdkVersion 23 - consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + // Plugin-level only — do not ship via consumerProguardFiles. + // Global options like -flattenpackagehierarchy break AGP 8+ consumers. + proguardFiles 'proguard-rules.pro' + } } lintOptions { diff --git a/android/consumer-rules.pro b/android/consumer-rules.pro deleted file mode 100644 index 05f9333..0000000 --- a/android/consumer-rules.pro +++ /dev/null @@ -1 +0,0 @@ --flattenpackagehierarchy \ No newline at end of file diff --git a/android/proguard-rules.pro b/android/proguard-rules.pro new file mode 100644 index 0000000..d1adf97 --- /dev/null +++ b/android/proguard-rules.pro @@ -0,0 +1 @@ +-flattenpackagehierarchy diff --git a/example/main.dart b/example/main.dart new file mode 100644 index 0000000..0f9034a --- /dev/null +++ b/example/main.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; +import 'package:freerasp/freerasp.dart'; + +/// Minimal freeRASP setup for pub.dev Example tab. +/// +/// The full runnable demo app lives under `example/lib/` in the repository +/// and is not published with the package. +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + final config = TalsecConfig( + androidConfig: AndroidConfig( + packageName: 'com.aheaditec.freeraspExample', + signingCertHashes: ['AKoRuyLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0='], + supportedStores: ['com.sec.android.app.samsungapps'], + ), + iosConfig: IOSConfig( + bundleIds: ['com.aheaditec.freeraspExample'], + teamId: 'M8AK35...', + ), + watcherMail: 'your_mail@example.com', + isProd: true, + ); + + await Talsec.instance.start(config); + + Talsec.instance.attachListener( + ThreatCallback( + onHooks: () => debugPrint('Hooking framework detected'), + onDebug: () => debugPrint('Debugger detected'), + onPrivilegedAccess: () => debugPrint('Root/Jailbreak detected'), + onSimulator: () => debugPrint('Emulator/Simulator detected'), + ), + ); + + runApp( + const MaterialApp(home: Scaffold(body: Center(child: Text('freeRASP'))))); +} From 6fd234314b9f3f40c31157e222ae6219cdb6104c Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Mon, 10 Aug 2026 17:43:55 +0200 Subject: [PATCH 3/5] release: freeRASP 8.2.1 Bump version and publish example/lib/main.dart for pub.dev scoring instead of a separate minimal entrypoint. Co-authored-by: Cursor --- .pubignore | 8 +++++--- CHANGELOG.md | 19 +++++++++++++++++++ example/main.dart | 38 -------------------------------------- pubspec.yaml | 2 +- 4 files changed, 25 insertions(+), 42 deletions(-) delete mode 100644 example/main.dart diff --git a/.pubignore b/.pubignore index b94cf2e..1e8b199 100644 --- a/.pubignore +++ b/.pubignore @@ -6,10 +6,12 @@ build/ /pubspec.lock -# Publish only a minimal example for pub.dev scoring; keep the full -# Flutter demo app (android/, ios/, lib/, …) out of the package. +# Publish only the example entrypoint for pub.dev scoring; keep the full +# Flutter demo app (android/, ios/, widgets, …) out of the package. example/* -!example/main.dart +!example/lib/ +example/lib/* +!example/lib/main.dart test/ pigeons/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 077fa37..a453eb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [8.2.1] - 2026-08-10 + +- Android SDK version: 19.2.1 +- iOS SDK version: 7.1.2 + +### Flutter + +#### Fixed + +- Fixed published package contents so required iOS framework artifacts are included +- Included the example entrypoint for pub.dev; the full demo app remains in the repository only +- Excluded non-essential development files (tests, codegen inputs, build outputs) from the published package + +### Android + +#### Fixed + +- Moved `-flattenpackagehierarchy` out of consumer ProGuard rules to restore AGP 8+ compatibility + ## [8.2.0] - 2026-08-05 - Android SDK version: 19.2.1 diff --git a/example/main.dart b/example/main.dart deleted file mode 100644 index 0f9034a..0000000 --- a/example/main.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:freerasp/freerasp.dart'; - -/// Minimal freeRASP setup for pub.dev Example tab. -/// -/// The full runnable demo app lives under `example/lib/` in the repository -/// and is not published with the package. -Future main() async { - WidgetsFlutterBinding.ensureInitialized(); - - final config = TalsecConfig( - androidConfig: AndroidConfig( - packageName: 'com.aheaditec.freeraspExample', - signingCertHashes: ['AKoRuyLMM91E7lX/Zqp3u4jMmd0A7hH/Iqozu0TMVd0='], - supportedStores: ['com.sec.android.app.samsungapps'], - ), - iosConfig: IOSConfig( - bundleIds: ['com.aheaditec.freeraspExample'], - teamId: 'M8AK35...', - ), - watcherMail: 'your_mail@example.com', - isProd: true, - ); - - await Talsec.instance.start(config); - - Talsec.instance.attachListener( - ThreatCallback( - onHooks: () => debugPrint('Hooking framework detected'), - onDebug: () => debugPrint('Debugger detected'), - onPrivilegedAccess: () => debugPrint('Root/Jailbreak detected'), - onSimulator: () => debugPrint('Emulator/Simulator detected'), - ), - ); - - runApp( - const MaterialApp(home: Scaffold(body: Center(child: Text('freeRASP'))))); -} diff --git a/pubspec.yaml b/pubspec.yaml index 3111571..1e8578e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: freerasp description: Flutter library for improving app security and threat monitoring on Android and iOS mobile devices. Learn more about provided features on the freeRASP's homepage first. -version: 8.2.0 +version: 8.2.1 homepage: https://www.talsec.app/freerasp-in-app-protection-security-talsec repository: https://github.com/talsec/Free-RASP-Flutter From b865e81669fa352db43efc4702bcb0f0a4fe7fea Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Mon, 10 Aug 2026 17:44:44 +0200 Subject: [PATCH 4/5] chore: remove unnecessary comments from publish and ProGuard config Co-authored-by: Cursor --- .pubignore | 9 --------- android/build.gradle | 2 -- 2 files changed, 11 deletions(-) diff --git a/.pubignore b/.pubignore index 1e8b199..b5200d9 100644 --- a/.pubignore +++ b/.pubignore @@ -1,21 +1,12 @@ .agents/ .cursor/ - -# Root .pubignore replaces root .gitignore for publish — keep build -# outputs and lockfiles out of the package. build/ /pubspec.lock - -# Publish only the example entrypoint for pub.dev scoring; keep the full -# Flutter demo app (android/, ios/, widgets, …) out of the package. example/* !example/lib/ example/lib/* !example/lib/main.dart - test/ pigeons/ -# Pub ignores dot-directories by default (.*). Re-include the signed -# framework probe data so the published iOS xcframework stays valid. !.jbroot/ !.jbroot/** diff --git a/android/build.gradle b/android/build.gradle index 74ac9a3..7e52bc2 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -53,8 +53,6 @@ android { buildTypes { release { - // Plugin-level only — do not ship via consumerProguardFiles. - // Global options like -flattenpackagehierarchy break AGP 8+ consumers. proguardFiles 'proguard-rules.pro' } } From f60bacec67ed353db8351b160727e85963a5eb1f Mon Sep 17 00:00:00 2001 From: Tomas Psota Date: Mon, 10 Aug 2026 17:47:41 +0200 Subject: [PATCH 5/5] fix: include full TalsecRuntime.xcframework in published package Co-authored-by: Cursor --- .pubignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pubignore b/.pubignore index b5200d9..f6ab228 100644 --- a/.pubignore +++ b/.pubignore @@ -8,5 +8,5 @@ example/lib/* !example/lib/main.dart test/ pigeons/ -!.jbroot/ -!.jbroot/** +!**/TalsecRuntime.xcframework/ +!**/TalsecRuntime.xcframework/**