当前位置: 首页 > 知识库问答 >
问题:

如何在Flatter中获取捆绑id

桂志新
2023-03-14

我使用以下方法获取应用程序名和packageName,但我需要iPhone用户的捆绑id。我想共享一个应用程序链接。我在Android上做的,但在iPhone上,我需要bundle id。

 Future<Null> _initPackageInfo() async {
        final PackageInfo info = await PackageInfo.fromPlatform();
        setState(() {
          _packageInfo = info;
          packageName = info.packageName;
          appName = info.appName;
          buildNumber = info.buildNumber;
        });
      }

共有3个答案

公孙智
2023-03-14

您可以使用get_版本包在iOS和Android上获取应用程序ID、版本名称和版本代码。

将此依赖项添加到你的应用程序,并按如下方式获取应用程序id

String projectAppID;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
  projectAppID = await GetVersion.appID;
} on PlatformException {
  projectAppID = 'Failed to get app ID.';
}

完整示例

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get_version/get_version.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  String _projectVersion = '';
  String _projectCode = '';
  String _projectAppID = '';
  String _projectName = '';

  @override
  initState() {
    super.initState();
    initPlatformState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  initPlatformState() async {
    String platformVersion;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      platformVersion = await GetVersion.platformVersion;
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    String projectVersion;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      projectVersion = await GetVersion.projectVersion;
    } on PlatformException {
      projectVersion = 'Failed to get project version.';
    }

    String projectCode;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      projectCode = await GetVersion.projectCode;
    } on PlatformException {
      projectCode = 'Failed to get build number.';
    }

    String projectAppID;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      projectAppID = await GetVersion.appID;
    } on PlatformException {
      projectAppID = 'Failed to get app ID.';
    }
    
    String projectName;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      projectName = await GetVersion.appName;
    } on PlatformException {
      projectName = 'Failed to get app name.';
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
      _projectVersion = projectVersion;
      _projectCode = projectCode;
      _projectAppID = projectAppID;
      _projectName = projectName;
    });
  }

  

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Plugin example app'),
        ),
        body: new SingleChildScrollView(
          child: new ListBody(
            children: <Widget>[
              new Container(
                height: 10.0,
              ),
              new ListTile(
                leading: new Icon(Icons.info),
                title: const Text('Name'),
                subtitle: new Text(_projectName),
              ),
              new Container(
                height: 10.0,
              ),
              new ListTile(
                leading: new Icon(Icons.info),
                title: const Text('Running on'),
                subtitle: new Text(_platformVersion),
              ),
              new Divider(
                height: 20.0,
              ),
               new ListTile(
                leading: new Icon(Icons.info),
                title: const Text('Version Name'),
                subtitle: new Text(_projectVersion),
              ),
              new Divider(
                height: 20.0,
              ),
              new ListTile(
                leading: new Icon(Icons.info),
                title: const Text('Version Code'),
                subtitle: new Text(_projectCode),
              ),
              new Divider(
                height: 20.0,
              ),
              new ListTile(
                leading: new Icon(Icons.info),
                title: const Text('App ID'),
                subtitle: new Text(_projectAppID),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
鲜于星波
2023-03-14

在Flutter项目的iOS部分产品捆绑标识符位于路径中的project.pbxproj文件中:

\ios\Runner.xcodeproj\project.pbxproj

具体规定如下:

PRODUCT_BUNDLE_IDENTIFIER = com.app.flutter.example;

请注意,该值与颤振项目中的Android软件包名称相同。

公良渝
2023-03-14

要手动查找项目名称,可以查看AndroidManifest。xml或in-Info。普利斯特。

在Android中,包名位于AndroidManifest中:

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

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

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

在Runner.xcodeproj/project.pbxproj中找到:

PRODUCT_BUNDLE_IDENTIFIER = com.example.appname;
  • 如何在flatter中更改包名
 类似资料:
  • 问题内容: 我有以下代码: 如何编写第5行以及目标意图中的getExtra 问题答案: 你需要有实现的界面,你将需要实现的和合适的构造函数,一个作为参数。请参阅接口文档。 要将列表放入中,请使用: 要使列表脱离目标活动,请使用:

  • 目前我正在学习i18n,发现 影响资源的查找过程。该示例摘自Java™教程-快速示例稍作修改: 组织。i18n。I18N示例 已定义的默认资源消息绑定。性质 和3个附加资源文件 MessagesBundle_de_de.properties MessagesBundle_en_US属性 MessagesBundle_fr_FR属性 到目前为止,一切都很好。给出: 给出: 现在,我添加以下资源文件M

  • 您上载了一个APK或Android应用程序捆绑包,该捆绑包具有活动、活动别名、服务或广播接收器(带有意图过滤器),但没有“Android:exported”属性集。无法在Android 12或更高版本上安装此文件。见:开发者。Androidcom/about/versions/12/behavior-changes-12#导出 在play store console中上载捆绑包时在play sto

  • 我能够成功地从服务器获取JSON数据,但无法解码数据并配置到所需的列表。我该怎么做? 这是我用来获取字段数据的代码 json['content']是一个映射 下面是我正在使用的JSON数据结构 上面的JSON数据结构在每个项目细节中都嵌套了order no,它必须在所有订单号中提取,然后是订单的相应数据。

  • 我有一个包含多个按钮的活动,当单击一个按钮时,将打开一个包含两个片段的新活动。 我试图根据按下的按钮在其中一个片段中显示一个回收器视图。问题是捆绑包为空,所以回收器视图不显示。 捆绑包在<code>onAttach 碎片 公共类MyFragment扩展片段{

  • 问题内容: 我做了一个Java应用程序。并将所有类捆绑在jar文件中。.我从netbeans运行项目,我的应用程序运行成功..但是我将我的.jar文件放在另一个地方,然后从那里运行..我没有我的应用程序使用的图标..在代码中,我从项目文件夹中存在的images目录中获取我的图标。 现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现.jar文件一样)。 问题答案: 似乎这里有两个问题: 在