【问题标题】:Gradle does not generate an output APKGradle 不生成输出 APK
【发布时间】:2015-03-11 18:48:38
【问题描述】:

我正在尝试在命令行上为我的 android 项目生成一个 APK。 我在跑步

./gradlew clean assembleProductionDebug

我得到的输出是:

:app:processProductionDebugManifest
:app:processProductionDebugResources
:app:generateProductionDebugSources
:app:compileProductionDebugJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:preDexProductionDebug
:app:dexProductionDebug
:app:processProductionDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageProductionDebug
:app:zipalignProductionDebug
:app:assembleProductionDebug

BUILD SUCCESSFUL

Total time: 2 mins 29.574 secs

但是,我的 build/outputs 文件夹是空的。当我跑步时也会发生同样的情况 ./gradlew 组装

我可以搜索的唯一相关内容可能是https://gradle.org/docs/current/dsl/org.gradle.language.assembler.tasks.Assemble.html,但如何在 build.gradle 中指定 objectFileDir?

注意:运行

./gradlew clean installProductionDebug

在我的设备上成功安装了 APK。

相关的build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'git-dependencies'
apply plugin: 'testfairy'
apply plugin: 'org.robolectric'


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.test.androidas"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    signingConfigs {
        release {
             storeFile file("as.keystore")
             storePassword "***"
             keyAlias "as"
             keyPassword "***"
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }


    productFlavors {
        production {
            applicationId "com.antsquare.test"
            versionCode 1
        }

        staging {
            applicationId "com.antsquare.test.staging"
            versionCode 1
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }

    testfairyConfig {
        apiKey '***'
        video "wifi"
        notify true
        testersGroups "ME"
        autoUpdate true
        videoQuality "low"
        videoRate "0.5"
    }
}

【问题讨论】:

  • 你试图在哪里找到这个文件?此文件在 Android Studio 中不可见
  • 它是{project}/app{或你的模块的文件夹}/build/outputs/apk/*.apk
  • 文件是指APK吗?我在 //build/outputs/apk/ 中寻找它
  • 是的,如果不清理你的项目并运行./gradlew build
  • /build/ 我没有输出文件夹,只有中间文件夹。我手动创建了输出/apk/,但它仍然没有放在那里

标签: android gradle gradlew


【解决方案1】:

先添加

android { 

     compileSdkVersion 21
     buildToolsVersion "21.1.2"

     ...

     lintOptions { 
         abortOnError false 
     } 
}

app 模块中的 build.gradle 中。

之后通过./gradlew task clean 清理您的项目,然后从控制台调用./gradlew task build --debug | grep .apk,您将看到apk 位置

【讨论】:

  • 谢谢,修复了构建错误,但仍然没有生成 apk。在输出中我看到以下几行:12:14:13.906 [DEBUG] [org.gradle.api.Project] Packaging app-staging-release-unaligned.apk 输出文件 /Users/jimwang/dev/test/AndroidAS/app /build/outputs/apk/app-staging-release.apk 已更改。输出文件 /Users/jimwang/dev/test/AndroidAS/app/build/outputs/apk/app-staging-release.apk 已被删除。
  • 试试cd /Users/jimwang/dev/test/AndroidAS/app/build/outputs/apk
  • 和之后的ls -a
  • 在你的安卓工作室的控制台中
  • 必须有这些文件
【解决方案2】:

在 Android Studio 中,

如果构建成功但没有生成

.apk

文件而不启动模拟器。

解决方案:确保menubuild下方的下拉菜单或运行左侧的下拉菜单 被选为 'app' 然后当你 运行debug 时,

.apk

将生成文件并启动模拟器。

【讨论】:

  • "确保在运行或调试时将下拉菜单或运行左侧的下拉菜单选择为“应用程序”,"我没有找到任何看起来像这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多