发布即时应用程序时:目标沙箱版本无效

3
我尝试通过Google Play发布Android Instant App,但遇到了以下问题 enter image description here 我尝试通过添加属性android:targetSandboxVersion = "2" 来解决此问题,但仍然无法解决。
通常,该问题涉及以下设置(build.gradle)。
buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta5'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
        google()
    }
}


ext {
    minSdkVersion = 26
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '26.0.1'
    androidSupport = '26.0.0'
    versionCode = 5
    versionName = "1.1"
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

======

正如评论所述,我通过添加语句android:targetSandboxVersion = "2"来修改基本功能,但是由于错误显示,即使我清除并重新构建项目,也无法编译。

enter image description here


这仅影响Android O设备。它对应用程序的行为施加了一些限制,不幸的是这些限制没有在任何地方记录。我们有一个高优先级的错误需要记录,但希望现在添加它不会太繁琐,因为它只影响O。需要这样做的原因是允许更轻松地升级安装在O上的应用程序。 - philo
@philo 我也遇到了完全相同的问题。我在所有清单文件的应用程序标记中添加了所请求的属性,但仍然出现错误。你可以在这里查看我的项目:https://github.com/BoD/JRAForg - BoD
@BoD 我尝试将targetSdkVersion设置为25,它可以通过Google Play控制台,但无法用作即时应用程序,这意味着URL无法跳转到您的即时应用程序。 - csytang
@cstyang,您在电子邮件中确认设置targetSandboxVersion = 2之后可以发布。您的电子邮件暗示,在发布之后,您无法启动即时应用程序。我想这就是您在这里所说的“它无法用作即时应用程序”的意思。我很乐意为您解决问题,但如果您将其作为新问题发布并让此问题独立存在,那将对其他人最有帮助。 - philo
根据我们的日志,即时应用支持 Android 5.1及以上版本,因此 minSdkVersion <= targetSdkVersion。@csytang - Idolon
显示剩余7条评论
2个回答

4

我曾经也遇到过同样的问题,这让我头痛了一段时间。解决方法是将targetSandboxVersion移动|添加到AndroidManifest.xml文件的根元素中。例如:

    <manifest android:hardwareAccelerated="true" 
     android:versionCode="20008" android:versionName="2.0.8"  
     package="com.yourapp.id" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:targetSandboxVersion="2">

开发 > 指南 > 应用清单文件


4

更新的答案:

这是一个已经修复的错误。您不再需要在可安装的应用程序中添加targetSandboxVersion,我不建议这样做,因为该功能尚未在任何地方得到记录或描述。

当我最初建议添加该属性时,我相信在发布O手机之前会提供文档。但是,负责添加此验证的团队意识到了他们的错误。

但是,在即时应用程序中仍然需要targetSandboxVersion。由于我们不允许没有该属性的即时应用程序,只需将其视为必需的魔术短语。


原始答案:

如消息所述,您需要在已发布的可安装应用程序的清单中添加targetSandboxVersion

这样做会对您在O设备上安装的应用程序施加一些限制,从而使O安装程序更容易将您的即时应用程序升级为已安装的应用程序。


我遇到了同样的问题,即使添加了这个属性也是如此。@philo 我仍然无法发布 - 如何获得最好的支持(我觉得StackOverflow评论不是最好的方式)?谢谢。 - BoD
android:targetSandboxVersion 是顶层清单的属性。您可以将其放在应用程序标记上。 - philo
2
@philo 你知道为什么在developer.android.com上android:targetSandboxVersion的使用仍未被记录吗? - Idolon
嗨,你好,请检查Android 8.0中的源代码,为了使用即时应用程序,targetSandboxVersion应该设置为2。请检查Android 8.0源代码中的/tools/apksig/src/main/java/com/android/apksig/ApkVerifier.java。在这里,我使用android8.0_r4。 - csytang
1
@Idolon,结果发现该属性尚未准备好可安装的应用程序,这就是为什么它没有文档记录的原因。某人在添加此验证时犯了一个错误。该属性不再需要。 - philo
1
@philo 感谢您的更新!如果我理解正确,如果可安装应用程序已部署到生产环境并使用了 android:targetSandboxVersion="2",那么将该值还原为 1 就不再可能了,对吗? - Idolon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接