即时应用Google Play上传失败

时间:2017-06-09 07:32:15

标签: android android-gradle android-instant-apps

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

  • 基本功能
  • 特征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应用发布版本。它包含basefeature1 apks,但当我将其上传到控制台时,我收到错误:

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

我做错了什么? installedinstant个应用可能有不同的功能集,对吗?

2 个答案:

答案 0 :(得分:1)

  

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

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

  

我做错了什么?

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

该错误听起来像是在{@ 1}}中找到了引用,但在Instant App zip中找不到相应的APK文件。

如果是这种情况,那么您应该再次检查feature2个文件以及每个模块中的build.gradle,以确保没有AndroidManifest.xml feature2的引用instant public static PathFinder<Path> shortestPath(PathExpander expander, int maxDepth, int maxHitCount) 1}}模块可能会接收。

答案 1 :(得分:0)

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

当调用即时应用程序时,Play商店会下载base + feature1。现在,假设您的feature1通过深层链接链接到feature2,然后播放商店下载功能2。即时应用程序应该包含zip中的所有功能apks。

在构建gradle中添加此项,然后尝试上传。这对我有用。

  

实施项目(':feature2')