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