You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Jitsi Meet Plus在Android 12安装失败的解决方法

解决Flutter集成Jitsi Meet Plus在Android 12上的安装解析失败问题

问题原因

Android 12(目标SDK版本31及以上)强制要求所有包含intent filters的组件必须显式声明android:exported属性。Jitsi Meet Plus依赖的org.jitsi.meet.sdk.ConnectionService组件自带intent filter,但未声明该属性,导致安装时触发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误。

解决步骤

修改项目的android/app/src/main/AndroidManifest.xml,将ConnectionService的声明移至<application>标签内部,并显式添加android:exported="true"属性:

修改后的完整AndroidManifest.xml代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="eu.buddybee.consultancy"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.GALLERY"/>
    <!-- Provide required visibility configuration for API level 30 and above -->
    <queries>
        <!-- If  app checks for Web support -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
        </intent>
        <!-- If  app checks for mail support -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="mailto" />
        </intent>
        <!-- If  app checks for SMS support -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="sms" />
        </intent>
        <!-- If  app checks for call support -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="tel" />
        </intent>
    </queries>

    <application tools:replace="android:label" android:label="BuddyBee" android:name="${applicationName}" android:icon="@mipmap/ic_launcher">
        <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <!-- Deep linking -->
            <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
            <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" android:host="buddybee.eu" />
                <data android:scheme="https" android:host="buddybee.eu" />
                <data android:scheme="https" android:host="www.buddybee.eu" />
                <data android:scheme="http" android:host="www.buddybee.eu" />
                <data android:scheme="www"/>
            </intent-filter>
        </activity>
        <!-- 添加Jitsi ConnectionService声明 -->
        <service 
            android:name="org.jitsi.meet.sdk.ConnectionService" 
            android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE" 
            android:exported="true">
            <intent-filter>
                <action android:name="android.telecom.ConnectionService" />
            </intent-filter>
        </service>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data android:name="flutterEmbedding" android:value="2" />
    </application>
</manifest>

关键说明

  • 必须将service标签放在<application>内部,这是AndroidManifest的规范要求(之前注释的代码放在了application外部,属于错误位置)。
  • android:exported="true"是Android 12+的强制要求,确保系统能识别该组件的可访问性。
  • 保留android.permission.BIND_TELECOM_CONNECTION_SERVICE权限,这是Jitsi实现通话功能必需的。

内容的提问来源于stack exchange,提问作者Abir Ahsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:50:28