0

我有一个包含以下模块的即时应用程序:

  • 基本特征
  • 特色1
  • 特征2
  • 已安装
  • 立即的

我想installed同时拥有feature1feature2,并且instant只拥有feature1

即时build.gradle

apply plugin: 'com.android.instantapp'

dependencies {
    implementation project(':base')
    implementation project(':feature1')
}

安装build.gradle

apply plugin: 'com.android.application'

dependencies {
    implementation project(':base')
    implementation project(':feature1')
    implementation project(':feature2')
}

我想测试上传到 Google Play 开发者控制台,所以我创建了instant应用发布版本。它包含basefeature1apk,但是当我将它上传到控制台时,我收到错误:

Your Instant App APKs contains an APK name 'feature2' that either does not exist or was not included.

我究竟做错了什么?应用程序可以有不同的功能集installedinstant对吗?

4

2 回答 2

1

安装应用程序和即时应用程序可以有不同的功能集,对吗?

是的,这应该是可能的。虽然您可以使用该com.android.library插件,feature2如果它仅被您安装的应用程序用作AAR文件(实际上,这样做可能有助于揭示问题)。

我究竟做错了什么?

我不确定,但我猜想这feature2是由 Instant App APK 文件之一以某种方式引用的。要检查,请在 Studio 3.0 Canary 的 APK Analyzer 中加载 Instant App .zip 文件,然后查看AndroidManifest.xml每个 APK 的文件。在您的设置中查找一个属性,<activity>如下所示:android:splitName="feature2"。这告诉一个 APK 另一个功能的代码存在于另一个功能 APK 中。

该错误听起来像是feature2在 Instant App zip 中找到了对但没有对应 APK 文件的引用。

如果是这种情况,那么您应该build.gradle再次检查您的文件以及AndroidManifest.xml每个模块中的文件,以确保没有feature2对该instant模块可能获取的引用。

于 2017-06-09T12:06:10.673 回答
0

即时应用程序应该具有所有功能模块,即使您不想使用它们只是不要将它们与 url 链接,它们将永远不会被加载。

调用免安装应用时,Play 商店会下载 base + feature1。现在,假设您的功能 1 通过深度链接链接到功能 2,然后播放商店下载功能 2。免安装应用程序应包含 zip 中的所有功能 apk。

将此添加到您的构建 gradle 中,然后尝试上传。这对我有用。

实施项目(':feature2')

于 2017-06-15T07:49:37.437 回答