* fix(cli, breaking): Align Android applicationId with user's `bundle.identifier`
This commit fixes the Android `applicationId` generation to accurately reflect the user-configured `bundle.identifier` when provided. It also refactors the logic by removing the `full_mobile_app_name` function, with `bundle_identifier` now being the direct source for the Android `applicationId`.
The `bundle_identifier` function now operates as follows:
1. If `bundle.identifier` is explicitly set by the user:
- It validates that the identifier has at least three segments (e.g., `com.example.app`).
- The user's `identifier` is then returned and used directly as the Android `applicationId`.
2. If `config.bundle.identifier` is not set by the user:
- It defaults to `com.example.{PascalCaseExecutableName}`. The `executable_name` (e.g., "my-app" derived from a project name like "MyApp") is converted to `PascalCase` (e.g., "MyApp") for this default.
**BREAKING CHANGE**:
This change primarily affects Android builds and may alter the final `applicationId` for users who had a custom `bundle.identifier` set, particularly if its casing or final segment differed from the PascalCased `executable_name`.
- **Previous Behavior**:
The Android `applicationId` was derived from `full_mobile_app_name`. This function effectively used the first two segments of the `bundle_identifier` (user-configured or default) but then **always** appended a PascalCased version of the `executable_name` as the final segment.
Example Scenario:
- User project name: "MyApp" (CLI set `executable_name` to "my-app")
- User configured `bundle.identifier` in Dioxus config: `"com.custom.myapp"`
- `bundled_app_name()` (from "my-app"): "MyApp"
- Old `applicationId` (via `full_mobile_app_name`): `"com.custom.MyApp"`
- **New Behavior**:
With the same user configuration (`"com.custom.myapp"`), the `applicationId` will now be: `"com.custom.myapp"`
This change ensures the `applicationId` respects the user's explicit `bundle.identifier` string. However, if users were unknowingly relying on the previous behavior where the last segment was always a PascalCased version of the `executable_name` (potentially mismatching their intended lowercase final segment in `bundle.identifier`), their `applicationId` will change upon updating the CLI.
According to Google's Android documentation, the `applicationId` must not be changed after an app is published, as this causes Google Play to treat it as a new application. Users who have published Android apps and utilized custom `bundle.identifier` configurations should meticulously verify their `applicationId` after this update to ensure it remains consistent with their published versions or to take appropriate action if a change is detected.
* fix: relax validation for bundle.identifier
1. Contains at least one dot ('.').
2. Does not start with a dot.
3. Does not end with a dot.
4. Does not contain consecutive dots ('..').
e.g., `com.example` or `com.example.app`
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>