单独的即时应用程序清单

时间:2017-09-04 20:32:51

标签: android android-manifest android-instant-apps

我可以为即时应用和常规应用使用不同的清单吗? 更详细地说,我需要在"android:name=App"字段(应用程序标记)中指定不同的类“App”。

2 个答案:

答案 0 :(得分:5)

有几种方法可以做到这一点:

如果您必须有两个不同的清单,那么您需要使用tools:replace,例如:

您安装的应用模块的清单:

<application
    android:name="com.example.App"
    tools:replace="android:name"/>

您的功能模块的清单:

<application
    android:name="com.example.feature.AppFeat">

构建已安装的应用后,它将与App一起运行,当您构建即时应用时,它将与AppFeat一起运行。你可以玩这种变化。

但是,如果在一个应用程序实现中使用isInstantApp()进行分支,则会更容易。

答案 1 :(得分:-1)

为了帮助您入门,这里是github关于即时应用程序的示例代码。您可以检查以下代码的结构:

<!--
  ~ Copyright 2017 Google Inc.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.google.android.instantapps.samples.hello.feature">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
            android:allowBackup="true"
            android:label="@string/app_name"
            android:theme="@style/AppTheme"
            android:supportsRtl="true">

        <activity
                android:name=".HelloActivity"
                android:label="@string/title_activity_hello">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter
                    android:autoVerify="true"
                    android:order="1">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />

                <data android:scheme="https" />
                <data android:scheme="http" />
                <data android:host="hello.instantappsample.com" />
                <data android:pathPrefix="/hello" />
            </intent-filter>
            <meta-data
                    android:name="default-url"
                    android:value="https://hello.instantappsample.com/hello" />
        </activity>
        <activity
                android:name=".GoodbyeActivity"
                android:label="@string/title_activity_goodbye">
            <intent-filter
                    android:autoVerify="true"
                    android:order="2">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />

                <data android:scheme="https" />
                <data android:scheme="http" />
                <data android:host="hello.instantappsample.com" />
                <data android:pathPrefix="/goodbye" />
            </intent-filter>
        </activity>

    </application>
</manifest>

以下Manifest file structure可帮助您进一步构建阶段。

  

下面的代码片段显示了清单的一般结构   文件及其可包含的每个元素。每个元素,以及   它的所有属性都在一个单独的文件中完整记录。

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>