【问题标题】:如何在颤振中更改包名称?
【发布时间】:2019-01-03 04:49:09
【问题描述】:

有什么办法可以更改 Flutter 项目的 Package Name 吗?

我想在flutter项目中更改包名和应用名。

【问题讨论】:

  • 只需搜索并替换所有文件中所有出现的旧包名。目前还没有更新名称的命令或类似命令。
  • 创建新项目时可以用flutter create --org com.domain app_name指定包名
  • @JannieTheunissen 这个问题似乎比这个问题更具体。如果有的话,应该作为这个问题的副本关闭。

标签: android dart flutter


【解决方案1】:

适用于 Android 应用名称

更改AndroidManifest.xml 文件中的标签名称:

 <application
    android:name="io.flutter.app.FlutterApplication"
    android:label="TheNameOfYourApp"   

对于包名

更改AndroidManifest.xml 中的包名(其中3个文件夹:main、debug 和 profile,根据您要部署的环境)文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package.name">

也在您的应用文件夹内的build.gradle 文件中

defaultConfig {
    applicationId "your.package.name"
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

最后,更改 MainActivity.java 类中的包(如果 MainActivity.java 不可用,请检查 MainActivity.kt)

    package your.package.name;

    import android.os.Bundle;
    import io.flutter.app.FlutterActivity;
    import io.flutter.plugins.GeneratedPluginRegistrant;
    public class MainActivity extends FlutterActivity {

更改目录名称:

发件人:

  android\app\src\main\java\com\example\name

收件人:

  android\app\src\main\java\your\package\name
  

编辑:2018 年 12 月 27 日

对于包名只需在构建build.gradle 中更改

defaultConfig {
    applicationId "your.package.name"
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

适用于 iOS

ios/Runner 目录中的Info.plist 文件更改捆绑标识符。

<key>CFBundleIdentifier</key>
<string>com.your.packagename</string>

更新

为避免重命名包和包标识符,您可以在终端中使用以下命令启动项目:

flutter create --org com.yourdomain appname

【讨论】:

  • 我也必须更新下面的目录名称(将 'example' 更改为 'woods') C:\Users\andytwoods\IdeaProjects\gear_log\android\app\src\main\java\com\树林\齿轮原木
  • 我的包标识符是$(PRODUCT_BUNDLE_IDENTIFIER)。那个变量隐藏在哪里?
  • 搜索变量:PRODUCT_BUNDLE_IDENTIFIER
  • PRODUCT_BUNDLE_IDENTIFIER 存储在 ios/Runner.xcodeproj 目录下 project.pbxproj 文件的多个位置。
  • 值得一提的是,appID必须是点分隔的3个单词的格式。
【解决方案2】:

手动更改名称似乎不起作用,会引发 gradle 错误,在我的情况下它确实会引发错误。

所以我通常会新建一个flutter项目。

我使用下面提到的命令来创建一个新的颤振应用程序

flutter create --org com.yourdomain appname

您的项目的包名将是 -> com.yourdomain.appname


如果您只想将包名称保留为com.appname,请进行如下更改

flutter create --org com appname

android添加java而不是kotlin添加-a java

flutter create -a java --org com.yourdomain appname

编辑


如果您已经创建了一个项目,您可以使用change_app_package_name 包来更改包名。

flutter pub run change_app_package_name:main com.package.appname

【讨论】:

  • 而且速度也很快
  • 'flutter create --org com.yourcompany --project-name new_app_name 。 (如果您在现有项目中,请添加句点 - 您应该首先删除 android 和 ios 文件夹以重新生成它们)。 MAKE A BACKUP 应该是获得答案的重要先决条件。
  • 您可以创建一个新项目,然后只需复制 pubspec.yaml 依赖项,运行 pub get,然后从 lib 文件夹中复制您的 dart 文件
【解决方案3】:

对于像我这样不喜欢更改特定文件的人,我使用了https://pub.dev/packages/rename

使用它,您只需在终端中运行这些命令,您的应用名称和标识符就会更改。pub 全局运行

正在安装:pub global activate rename

然后,在你的 Flutter 项目根目录中运行这个命令。

pub global run rename --bundleId com.example.android.app --target android

【讨论】:

    【解决方案4】:

    安卓

    在 Android 中,包名在 AndroidManifest 中:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        ...
        package="com.example.appname">
    

    iOS

    在 iOS 中,包名是 Info.plist 中的包标识符:

    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    

    Runner.xcodeproj/project.pbxproj 中找到:

    PRODUCT_BUNDLE_IDENTIFIER = com.example.appname;
    

    更改名称

    在多个位置找到包名称,因此要更改名称,您应该在整个项目中搜索旧项目名称的出现并全部更改。

    Android Studio 和 VS 代码:

    • Mac:Command + Shift + F
    • Linux/Windows:Ctrl + Shift + F

    感谢 diegoveloper 在 iOS 方面的帮助。

    更新:

    多次返回此页面后,我认为用正确的名称开始一个新项目然后将旧文件复制过来会更容易和更简洁。

    【讨论】:

    • 您好,我有一个问题。它可能与 Flutter 主题无关,但是如果我创建一个新项目,如何将重命名的项目推送到 github 上的当前项目?
    • @Ooto,您可以删除旧项目(根目录下的.git 目录除外),然后将新项目与旧项目放在同一目录下。然后提交并推送更改。
    • 成功了!尝试了一个新的样板存储库,没有出错
    【解决方案5】:

    更改pubspec.yaml 中的name 属性(第1 行)

    apk的名字,把android:label改成AndroidManifest.xml

    【讨论】:

    • 需要更改 MainActivity.java 或 mainActivity.kt
    【解决方案6】:

    这就是我为 ios 和 android 重命名包的方式

    1. 进入app模块中的build.gradle,重命名applicationId "com.company.name"
    2. 转到app/src/main 中的Manifest.xml 并重命名package="com.company.name"android:label="App Name"
    3. 转到app/src/debug 中的Manifest.xml 并重命名package="com.company.name"
    4. 转到app/src/profile 中的Manifest.xml 并重命名package="com.company.name"
    5. 转到app/src/main/kotlin/com/something/something/MainActivity.kt 并重命名package="com.company.name"
    6. 转到app/src/main/kotlin/ 并重命名每个目录,使结构看起来像app/src/main/kotlin/com/company/name/
    7. 在您的项目中转到pubspec.yaml 并将name: something 更改为name: name,例如:- 如果包名称为com.abc.xyz,则name: xyz
    8. 转到 lib 文件夹中的每个 dart 文件并将导入重命名为修改后的名称。
    9. 打开 XCode 并打开运行程序文件,然后在项目资源管理器中单击运行程序。
    10. 转到常规 -> 双击捆绑标识符 -> 将其重命名为 com.company.name
    11. 转到 Info.plist 单击 Bundle name -> 将其重命名为您的 App Name。
    12. 关闭所有内容 -> 转到您的颤振项目并在终端flutter clean 中运行此命令

    【讨论】:

    • 我没有 kotlin 文件夹,也不知道为什么
    【解决方案7】:

    尽可能简单地使用这个change_app_package_name包首先添加依赖

     dev_dependencies: 
      change_app_package_name: any
    

    然后运行这个命令

    flutter pub run change_app_package_name:main com.new.package.name
    

    【讨论】:

    • 像魅力一样工作
    • 但 lib/ 文件夹 / file.dart 中的所有包名没有更改,我们必须搜索所有 old_name 并全部替换。有同样的问题吗?
    【解决方案8】:

    根据flutter官方文档,你只需要更改app/build.gradle目录下的ApplicationId即可。然后您只需构建您的 apk,清单文件的包名称将根据您在 build.gradle 中更改的 ApplicationId 更改。由于在构建 apk 和 google play 时出现抖动,两者都考虑了来自 build.gradle 的ApplicationId。这个解决方案对我有用。

    来源:Official Documentation

    【讨论】:

      【解决方案9】:

      如果您没有启动项目,这是最好的方法。

      flutter create --org com.yourdomain appname
      

      如果您已经创建了项目,请在您的 dev_dependencies 中安装此 package 并运行此命令。

      flutter pub run change_app_package_name:main com.new.package.name
      

      这将改变在 android 中更改包名称的所有复杂内容。并在flutter的iOS文件夹上右键,用Xcode打开。

      Xcode > 选择 Runner > 在 general 选项卡中,您可以更改 bundle Identifier。

      如果您已经创建了一个项目并且不知道更改包名称的复杂性,这是最简单的方法。

      【讨论】:

        【解决方案10】:

        更改 Flutter 项目的所有 AndroidManifest.xml 文件 --> package="your.name.app" (app/src/debug/AndroidManifest.xml) 和 (app/src/main/AndroidManifest.xml) 和 (app/src/profile/AndroidManifest.xml)

        好看!!

        【讨论】:

        • 谢谢 Percy 我遇到了这个问题我找到了你的答案。
        【解决方案11】:

        更新您必须在这些中将包名称更改为您想要的包名称 五个位置。

        1.) src/profile/AndroidManifest.xml
        2.) src/debug/AndroidManifest.xml
        3.) src/main/AdroidManifest.xml
        4.) build.gradle .
               defaultConfig {
                   applicationId
        5.) MainActivity.java on "package"
        

        最后一步是运行flutter clean

        【讨论】:

          【解决方案12】:

          关于 Visual Studio 代码

          编辑 > 在文件中替换

          在 Android 工作室上

          1.右键单击您的项目>替换路径

          2。写下你的旧包和新包 > 全部替换

          【讨论】:

            【解决方案13】:

            更改软件包名称的最快捷、最简洁的方法!

            警告:

            如果您已编辑文件夹 android/ios/ 的内容,则需要确保在继续之前将这些更改备份到某处。

            1.删除 Flutter 项目根目录下的文件夹:

            • android/
            • ios/
            • build/

            假设您想将 com.oldcompany.oldproject 重命名为 com.newcompany.newproject

            2。从项目的根目录启动以下命令:

            flutter create --org com.newcompany --project-name newproject .
            

            PS:
            为确保一切设置正确,您可以通过运行以下命令在文件中搜索您的软件包名称

            grep --color -r com.oldcompany.oldproject *
            
            grep --color -r com.newcompany.newproject *
            

            【讨论】:

            • 这是最好的答案,绝对是最干净快捷的解决方案!如果您修改了特定于平台的文件,请务必备份它们并将更改放回原处。最简单的方法是使用 GIT 存储库并完成此过程所做的更改。
            • 这是迄今为止最快、最直接的解决方案。请记住在删除之前备份android/ios/中的所有文件!
            【解决方案14】:

            Android 和 Ios 的默认路径更改权。

            适用于 Android

            打开 AndroidManifest.xml,

            • 走这条路。

            app/src/main/AndroidManifest.xml

            • 选择包名,然后右键,

            • 点击重命名后,重命名弹出(对话框)显示。

            • 在此处输入新的包名称,

            • 更改名称文本后,单击重构按钮。

            __________________________________________________________________________

            对于IOS

            • 从抽屉中选择ios文件夹,然后右键单击,

            • 选择,双击抽屉里的Runner,然后选择General

            • 然后,更改您的包标识符(包名称)。
            • 更改捆绑标识符(包名称)后,您的包名称为 已针对 Ios 进行了更改。

            【讨论】:

              【解决方案15】:

              在尝试了以上所有方法之后。对我来说重命名包颤振的简单工作 Android 工作室

              第 1 步:

              Mac:Command + Shift + R

              Linux/Windows:Ctrl + Shift + R

              更换新包后按Replace All,等待Android Studio运行完成。

              第 2 步:

              接下来,转到AndroidManifest.xml

              <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="your.package.name">
              

              复制 package name 并执行相同的步骤 1 以在 AndroidManifestbuild.gradle 中重命名 package

              最后,更改 MainActivity.java 类中的包(如果 MainActivity.java 不可用,请检查 MainActivity.kt)

              package your.package.name;
              
              import android.os.Bundle;
              import io.flutter.app.FlutterActivity;
              import io.flutter.plugins.GeneratedPluginRegistrant;
              public class MainActivity extends FlutterActivity {
              

              更改目录名称。 详情见以下链接this

              发件人:

              android\app\src\main\java\com\example\name

              收件人:

              android\app\src\main\java\your\new_package\name

              【讨论】:

                【解决方案16】:

                使用以下包将应用包名称更改为single command。它使这个过程变得非常简单和快速。

                flutter pub run change_app_package_name:main com.new.package.name

                https://pub.dev/packages/change_app_package_name

                【讨论】:

                  【解决方案17】:

                  使用change_app_package_name 包轻松更改应用包名称

                  只需在开发依赖项中添加上述包

                  dev_dependencies:
                    flutter_test:
                      sdk: flutter
                    change_app_package_name: ^0.1.2
                  

                  并运行以下命令,将“com.new.package.name”替换为您的新包名称

                  flutter pub run change_app_package_name:main com.new.package.name
                  

                  Package Link on Pub Dev

                  【讨论】:

                    【解决方案18】:

                    要在 flutter 中更改 包名,您必须为 所有平台 进行此操作。

                    为了方便,我建议你使用rename包。

                    只需在您的 Flutter 项目根目录中运行此命令即可。

                    pub global run rename --bundleId com.onat.networkApp
                    

                    这里,com.onat.networkApp 是你的包名

                    要针对特定​​平台,请使用“-t”选项。 例如:

                    pub global run rename --bundleId com.example.android.app -t android
                    

                    您可以了解更多关于重命名here

                    【讨论】:

                      【解决方案19】:

                      我的应用部分有两个 manifest.xml 文件,所以我需要在两者中更改包名称

                      【讨论】:

                        【解决方案20】:

                        即使我的答案不会被接受为正确答案,我只是觉得上面所有这些答案导致我遇到更多问题,这就是我如何解决它

                        1. 获取 Sublime Text(很疯狂,对吗?不,按照我的步骤来)
                        2. 单击文件并选择打开文件夹,然后选择您正在处理的项目的文件夹
                        3. 现在单击从选项卡中查找,然后选择在文件中查找或执行 Ctrl + Shift + F(对于 Windows 用户,对于 Mac 用户,您已经知道该练习)
                        4. 现在在“查找”部分复制并粘贴您要更改的软件包的名称,然后在替换部分粘贴您要替换的软件包名称。
                        5. 点击查找(暂时不要点击替换)。
                        6. 现在单击“查找”会列出项目中与您的搜索条件匹配的所有可用包名称,如果您对此感到满意,请从“否”开始重复。 3 但这次点击替换。
                        7. 重建您的项目并享受乐趣

                        结论:一个简单的查找和替换程序就可以解决这个问题,为此我强烈推荐 Sublime Text 3。

                        【讨论】:

                        • 还需要按照@diegoveloper 在他的回答中建议的那样更新文件路径。通过搜索,我们无法搜索到路径。
                        【解决方案21】:

                        从 Android Studio 4.1.3 开始,更改包名称再简单不过了。

                        如果您不使用 Firebase 或任何其他外部服务,只需更改这些文件中的包名称:

                        1. 在 build.gradle (app) 文件中
                        2. 在 Manifest 文件中(main、debug 和 profile)
                        3. 代码文件中的包导入(Android Studio. 将处理更改)

                        注意:还要更改目录名称(在 Kotlin 或 Java 下)。

                        如果您使用 Firebase 或任何其他外部服务,您也需要在那里更改包名称。

                        【讨论】:

                          【解决方案22】:

                          您可以关注谷歌官方文档:https://developer.android.com/studio/build/application-id.html

                          应在 Build.gradle 中更改应用程序 ID,而在 AndroidManifest.xml 中更改包名称。

                          但是,更改软件包名称时应该小心。

                          另外,在重新上传应用程序时,应该小心,因为它会将先前上传的应用程序的应用程序 ID 与新上传的应用程序匹配。

                          【讨论】:

                            【解决方案23】:

                            在Android中,更改应用程序ID

                            > build.gradle

                            文件和 iOS 变化

                            > 项目设置中的包名称。

                            【讨论】:

                              【解决方案24】:

                              如果您不喜欢以这种方式更改文件,那么另一种方法是使用此包。

                              https://pub.dev/packages/rename

                              rename --bundleId com.newpackage.appname
                              pub global run rename --appname "Your New App Name"
                              

                              使用它,您只需在终端中运行这 2 个命令,您的应用名称和标识符就会被更改。pub 全局运行

                              【讨论】:

                              • 这似乎只在一个地方(build.gradle)改变了applicationId。它没有更新 AndroidManifest。你得到了不同的结果吗?
                              【解决方案25】:

                              简单的方法,在编辑器中搜索 E.g.VS CODE your.package.name E.g com.example.application 通过所有文件。,

                              • 3 个 AndroidManifest 文件(配置文件、调试文件、主文件)
                              • 1 build.gradle
                              • 1 爪哇 或 kt 文件

                              这些会弹出

                              替换所有这些,瞧。如果你已经构建了你的项目,build目录下会弹出很多文件,你可以忽略这些文件,不需要改变那些

                              【讨论】:

                              • @Yalzeee,我不这么认为
                              【解决方案26】:

                              我认为这不是解决问题的正确方法。但是您可以使用所需的包名称创建一个新项目,然后将所有源文件从现有项目复制到新项目。

                              **注意:您还必须复制 pubspec 的所有内容。对于 firebase 和其他 API,该解决方案可能有点冗长。

                              【讨论】:

                                【解决方案27】:

                                我已经对现有的包名进行了全局搜索,并用新的包名更改了所有字段。然后变了

                                app->src->main->yourOldFolderName

                                根据新包名称的文件夹名称。之后,将所有导入的包名称更改为新的包名称。这是很多手工工作,但值得,没有任何问题。

                                注意:注意包名前的空格可能会导致编译错误

                                捷径:

                                全局搜索- ctrl+shift+f

                                更换包装

                                文件搜索- ctrl+f

                                更改导入包名

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2022-01-20
                                  • 1970-01-01
                                  • 2021-06-14
                                  • 2021-12-09
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2021-08-12
                                  相关资源
                                  最近更新 更多