当outputDirectory或outputFileName更改时,启动调试应用程序时,AS无法找到apk

问题描述

我正在使用Android Studio调试应用程序。 由于某些原因,我必须更改认的输出apk目录和文件名。所以我在应用程序的build.gradle脚本中更改了applicationVariants的outputDirectory和outputFileName。 此修改使apk输出到预期的位置和名称。 但是我发现一个问题是,当我像以前一样开始调试应用程序时,AS表示:

Installation did not succeed.
The application Could not be installed.

List of apks:
[0] 'C:\Users\progquest\projects\Study\app\build\outputs\apk\free\debug\app-free-debug.apk'
Installation Failed due to: 'Invalid File: C:\Users\progquest\projects\Study\app\build\outputs\apk\free\debug\app-free-debug.apk'

注意:“免费”是我应用程序的一种产品。

显然,调试器仍然使用旧的输出目录和apk文件名来查找源apk。如何更改?

谢谢。

解决方法

这发生在我身上;在我取消选择然后在“构建变体”工具中重新选择正确的“活动构建变体”后,它再次开始工作(即使它已经被选中)。

,

在同一目录中有一个名为output-metadata.json的文件。

此文件的内容在我的系统上如下所示:

{
  "version": 2,"artifactType": {
    "type": "APK","kind": "Directory"
  },"applicationId": "com.example.sample","variantName": "debug","elements": [
    {
      "type": "SINGLE","filters": [],"versionCode": 1,"versionName": "1.0","outputFile": "app-debug.apk"
    }
  ]
}

从我的测试看来,更改"outputFile"中的路径(即当前指出"app-debug.apk"的字段)会使Android-studio接受更改。


或者:使用该属性来更改apk名称-

android {
    ...
    defaultConfig {
        ...
        setProperty("archivesBaseName","MyNewAppNameGoesHere")
    }
}

这将设置apk名称的一部分,并且还会适当地更新output-metadata.json,以便Android Studio可以选择它。

请参阅https://stackoverflow.com/a/39202249/2923245