Android:Unable to determine application id: com.android.tools.idea.run.ApkProvisionException

a 夏天 提交于 2020-03-04 23:30:23

Android Studio 从3.0升级到3.6+之后,安装软件在下方run的调试台出现

Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: debug。

点击上方run的绿色箭头按钮,除了run调试台,没有任何反应

编译正常,代码无错误,在app/build/outputs/apk其实是有debug包生成的,把它拷贝到手机上,也能安装,如果你不嫌麻烦的话。不过不能安装就不能debug。

 

出现这个问题,是由于Android Studio升级后,他的gradle和classpath不匹配。这是一份,2015年的项目,依赖包多,代码老化,使用的classpath是2.3.3,gradle是3.3,现在的classpath能到3.6+,gradle能5.+。想要不改动就解决的话,下载一个Android3.0或者2.3 。使用新版Android Studio的往下看

 

如果你想要符合你编译器默认的,就新建一个项目,对比一下,然而我在使用了它新建后默认的classpath3.6.1和gradle5.5后,出现了,NoClassDefFoundError: com/android/builder/Version,网上搜不到,可能需要所有配置都改一下,包括app下的build.gradle,改compileSdkVersion和buildToolsVersion,需要的小伙伴可以尝试一下,因为此项目依赖了大量的第三方和引入了好几个module,所以这些改配置很容易世界爆炸,还是改个版本没那么高的把。有大佬知道的话这个错误是为什么,望留言告诉我下,万分感谢。

 

可以把依赖的compile改成implementation,修改的好处,网上很多。

那么我的版本:

项目下build.gradle的
buildscript{dependencies {classpath 'com.android.tools.build:gradle:3.0.1'}}
gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

出现

Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':classpath'.

在项目下的build.gradle两个repositories添加 google(),假如module里有classpath的,要把module的对应上,同样添加google()

apply from: 'config/global.gradle'

buildscript {
    ext.kotlin_version = '1.2.30'
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath "com.tencent.bugly:tinker-support:1.1.1"
        classpath 'com.meituan.android.walle:plugin:1.1.5'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        google()
        maven {
            url 'http://maven.aliyun.com/nexus/content/repositories/releases/'
        }
        maven {
            url "https://jitpack.io"
        }
        maven {
            url "https://dl.bintray.com/thelasterstar/maven/"
        }
        maven {
            url "https://maven.google.com"
        }
        maven {
            url "https://dl.google.com/dl/android/maven2/"
        }
        flatDir{
            dir 'libs'
        }
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

 

出现module Unable to resolve dependency for ':app@dev/compileClasspath'的话,你看看是不是用了devCompile,使用了dev的东西,你的module是没有dev的,把dev去掉就行了。

比如说:

//    for leak memory
//    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
//    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
//    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'

PS:升级Android Studio我也不想的啊,可是RN项目的安卓包,不升级就跑不起来,开始很多配置上的问题,用Android Studio编译通过后更方便些,当然有更好的办法,可以留言告诉我一下,感谢哦。

写的很乱,不过主要是编译失败的问题,看对应的就行了,搞了一上午配置了,喜欢的话点个赞哟。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!