|
4 | 4 | The flutter_blue_plus_android plugin manifest is intentionally blank, so |
5 | 5 | the app declares these itself. neverForLocation: the scan is filtered to |
6 | 6 | the PyBLE service UUID and derives no location (startScan is called with |
7 | | - androidUsesFineLocation: false). ACCESS_FINE_LOCATION is legacy-only, |
8 | | - capped at Android 11 (API 30). --> |
| 7 | + androidUsesFineLocation: false). The app is BLE-first, so BLE hardware |
| 8 | + is required. Classic Bluetooth and location hardware remain optional: |
| 9 | + those permissions are only older-Android BLE scan prerequisites. |
| 10 | + Bluetooth/Fine-Location declarations are legacy-only and capped at |
| 11 | + Android 11 (API 30); Coarse Location is capped at Android 9 (API 28), |
| 12 | + matching the pinned adapter contract. --> |
| 13 | + <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> |
| 14 | + <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" /> |
| 15 | + <uses-feature android:name="android.hardware.location" android:required="false" /> |
9 | 16 | <uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> |
10 | 17 | <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> |
| 18 | + <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> |
| 19 | + <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> |
11 | 20 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" /> |
| 21 | + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="28" /> |
12 | 22 | <application |
13 | 23 | android:label="PyBLE" |
14 | 24 | android:name="${applicationName}" |
15 | 25 | android:icon="@mipmap/ic_launcher"> |
| 26 | + <!-- Flutter 3.44 Impeller/Vulkan renders a blank frame on the validated |
| 27 | + Lenovo TB-J616X (MediaTek, Android 12). Keep the supported legacy |
| 28 | + OpenGL renderer until the physical Android gate passes on a later |
| 29 | + Flutter engine. See NFR-COMPAT-4. --> |
| 30 | + <meta-data |
| 31 | + android:name="io.flutter.embedding.android.EnableImpeller" |
| 32 | + android:value="false" /> |
16 | 33 | <activity |
17 | 34 | android:name=".MainActivity" |
18 | 35 | android:exported="true" |
|
0 commit comments