Back to list
gsmlg-app

project-metadata

by gsmlg-app

Flutter Application Template for AI coder

1🍴 0📅 Jan 19, 2026

SKILL.md


name: project-metadata description: Guide for updating app name, bundle identifier, and company metadata across all platforms (project)

Flutter App Metadata Skill

This skill guides updating application metadata (app name, bundle identifier, company info) across all platforms in this Flutter project.

When to Use

Trigger this skill when:

  • Renaming the application
  • Changing the bundle/application identifier
  • Updating company name or copyright information
  • Setting up a new project from this template
  • User asks to "change app name", "update identifier", "rename app", or "change bundle id"

Quick Reference: All Files to Update

PlatformFileWhat to Change
Androidandroid/app/build.gradle.ktsnamespace, applicationId
Androidandroid/app/src/main/kotlin/<package>/MainActivity.ktpackage declaration + directory path
Androidandroid/fastlane/Appfilepackage_name
iOSios/Runner.xcodeproj/project.pbxprojPRODUCT_BUNDLE_IDENTIFIER (6 occurrences)
iOSios/fastlane/Appfileapp_identifier
iOSios/fastlane/Matchfileapp_identifier
iOSios/fastlane/Fastfilebundle_identifier, profile names
macOSmacos/Runner/Configs/AppInfo.xcconfigPRODUCT_NAME, PRODUCT_BUNDLE_IDENTIFIER, PRODUCT_COPYRIGHT
macOSmacos/Runner.xcodeproj/project.pbxprojPRODUCT_BUNDLE_IDENTIFIER (3 occurrences)
Linuxlinux/CMakeLists.txtBINARY_NAME, APPLICATION_ID
Windowswindows/runner/Runner.rcCompanyName, FileDescription, InternalName, LegalCopyright, OriginalFilename, ProductName
Flutterpubspec.yamlname, description

Detailed Platform Updates

1. Flutter (pubspec.yaml)

name: my_app_name          # Package name (snake_case)
description: My App Description

2. Android

build.gradle.kts

Location: android/app/build.gradle.kts

android {
    namespace = "com.example.myapp"        // Line ~19
    // ...
    defaultConfig {
        applicationId = "com.example.myapp" // Line ~33
    }
}

MainActivity.kt

Location: android/app/src/main/kotlin/<package>/MainActivity.kt

Important: The directory structure must match the package name!

package com.example.myapp  // Must match applicationId

import io.flutter.embedding.android.FlutterActivity

class MainActivity : FlutterActivity()

Directory rename required:

# Old: android/app/src/main/kotlin/dev/gsmlg/flutter_app_template/
# New: android/app/src/main/kotlin/com/example/myapp/

mkdir -p android/app/src/main/kotlin/com/example/myapp
mv android/app/src/main/kotlin/<old>/<package>/MainActivity.kt \
   android/app/src/main/kotlin/com/example/myapp/
rm -rf android/app/src/main/kotlin/<old>

Fastlane Appfile

Location: android/fastlane/Appfile

package_name("com.example.myapp")

3. iOS

Xcode Project

Location: ios/Runner.xcodeproj/project.pbxproj

Search and replace all occurrences of PRODUCT_BUNDLE_IDENTIFIER:

  • Main app: com.example.myapp
  • Tests: com.example.myapp.RunnerTests

6 occurrences total (Debug, Release, Profile for both Runner and RunnerTests)

Fastlane Files

Appfile (ios/fastlane/Appfile):

app_identifier("com.example.myapp")

Matchfile (ios/fastlane/Matchfile):

app_identifier(["com.example.myapp"])

Fastfile (ios/fastlane/Fastfile):

# In update_code_signing_settings:
bundle_identifier: "com.example.myapp",
profile_name: ENV["sigh_com.example.myapp_appstore_profile-name"] || "match AppStore com.example.myapp",

# In export_options provisioningProfiles:
"com.example.myapp" => ENV["sigh_com.example.myapp_appstore_profile-name"] || "match AppStore com.example.myapp"

4. macOS

AppInfo.xcconfig

Location: macos/Runner/Configs/AppInfo.xcconfig

PRODUCT_NAME = my_app_name
PRODUCT_BUNDLE_IDENTIFIER = com.example.myapp
PRODUCT_COPYRIGHT = Copyright © 2025 My Company. All rights reserved.

Xcode Project

Location: macos/Runner.xcodeproj/project.pbxproj

Search and replace PRODUCT_BUNDLE_IDENTIFIER:

  • Tests: com.example.myapp.RunnerTests

3 occurrences (Debug, Release, Profile for RunnerTests)

5. Linux

Location: linux/CMakeLists.txt

set(BINARY_NAME "my_app_name")
set(APPLICATION_ID "com.example.myapp")

6. Windows

Location: windows/runner/Runner.rc

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", "My Company" "\0"
            VALUE "FileDescription", "My App Name" "\0"
            VALUE "FileVersion", VERSION_AS_STRING "\0"
            VALUE "InternalName", "my_app_name" "\0"
            VALUE "LegalCopyright", "Copyright (C) 2025 My Company. All rights reserved." "\0"
            VALUE "OriginalFilename", "my_app_name.exe" "\0"
            VALUE "ProductName", "My App Name" "\0"
            VALUE "ProductVersion", VERSION_AS_STRING "\0"
        END
    END
END

Identifier Naming Conventions

PlatformFormatExample
AndroidLowercase, dots, underscorescom.example.my_app
iOS/macOSReverse domain, mixed case OKcom.example.myApp
LinuxLowercase, dots onlycom.example.myapp
WindowsN/A (uses company name)My Company

Recommended: Use consistent lowercase with dots across all platforms:

  • app.mycompany.myappname

Automated Rename Script

This project includes a setup script for initial renaming:

dart run bin/setup_project.dart my_new_project_name

Note: This script handles basic renaming but may not update all metadata fields. Use this skill for comprehensive updates.

Post-Update Checklist

After updating metadata:

  1. Android: Clean and rebuild

    cd android && ./gradlew clean
    flutter clean && flutter pub get
    
  2. iOS: Reinstall pods and regenerate

    cd ios && rm -rf Pods Podfile.lock && pod install
    
  3. iOS/macOS Signing: If bundle ID changed, regenerate certificates

    cd ios/fastlane && fastlane match nuke appstore  # Caution: removes existing
    cd ios/fastlane && fastlane sync_certificates
    
  4. Verify Build:

    flutter clean
    melos bootstrap
    flutter build apk --debug
    flutter build ios --debug --no-codesign
    flutter build macos --debug
    flutter build linux --debug
    flutter build windows --debug
    

Common Issues

IssueCauseSolution
Android build failsPackage directory mismatchEnsure Kotlin directory matches applicationId
iOS signing failsBundle ID changedRegenerate provisioning profiles
App won't install over oldDifferent identifierUninstall old app first
macOS sandbox issuesBundle ID mismatchUpdate entitlements if needed

Search Commands

Find all identifier references:

# Find old identifier pattern
grep -r "old\.identifier" --include="*.gradle*" --include="*.kt" --include="*.pbxproj" \
  --include="*.xcconfig" --include="*.rc" --include="*.cmake" --include="Appfile" \
  --include="Matchfile" --include="Fastfile" --include="pubspec.yaml" .

Example: Full Rename

Renaming from dev.gsmlg.flutterAppTemplate to app.mycompany.myapp:

# 1. Update pubspec.yaml name
# 2. Update Android (build.gradle.kts, MainActivity.kt + directory, Appfile)
# 3. Update iOS (project.pbxproj, Appfile, Matchfile, Fastfile)
# 4. Update macOS (AppInfo.xcconfig, project.pbxproj)
# 5. Update Linux (CMakeLists.txt)
# 6. Update Windows (Runner.rc)
# 7. Clean and rebuild all platforms

Score

Total Score

55/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon