从第三方图书馆导入课程。 Android Studio 3.1,Gradle 3.1

时间:2018-04-03 10:47:11

标签: android android-studio-3.1 android-gradle-3.1.0

更新Android Studio并将Gradle更新为3.1后,我将所有compile语句更改为implementation。但是当我构建时,android studio无法解析第三方库中的导入。

场景:主项目导入子模块,该子模块也导入jar文件。

当我尝试将jar文件中的类导入主项目时,android studio无法解析它。

如何在不必将jar文件作为依赖项添加到主项目中的情况下导入单个文件?

3 个答案:

答案 0 :(得分:1)

您应该使用function draw<%response.write(counter1)%>() { var arr = []; for( var i = 1; i < 42;) { alert(document.getElementById("<%response.write(counter1)%>m2mangle"+i)).value); arr.push({ angle: document.getElementById("<%response.write(counter1)%>m2mangle1").value, h: document.getElementById("<%response.write(counter1)%>m2mlength1").value}); i++; } var canvas = document.getElementById('curtainCanvas<%response.write(counter1)%>'); if (canvas.getContext) { var ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.font = "20px Georgia"; var pos = { x: 15, y: 15 }; ctx.fillText(1,10,10); for (var i = 0; i < arr.length; i++) { // alert(pos.x); ctx.moveTo(pos.x, pos.y); pos = getAngle(ctx, pos.x, pos.y, arr[i].angle, arr[i].h); ctx.lineTo(pos.x, pos.y); ctx.fillText(i+2,pos.x, pos.y); } ctx.stroke(); } } 代替,它是新的api,或者在主项目中直接使用依赖 。只需将compile更改为implementation即可解决问题,但您可以考虑尽可能使用api来缩短构建时间。

您可以看到implementationapi here之间的区别。

答案 1 :(得分:1)

@ nongthonbam-tonthoi的答案是正确的,但他没有解释原因。

简短版

实施 - 隐藏其他模块(依赖于此模块)的依赖关系。如果B取决于A,则不能使用A中使用implementation声明的任何dep。

api - 如果您使用{{A将“ GSON ”添加为模块api中的dep,请将此功能提供给依赖此模块的其他模块。 1}}而不是implementation,依赖A的所有其他模块都可以使用 GSON 而无需再次声明它。

长版

implementation是一种仅为给定模块声明依赖关系的方法。这意味着,依赖关系只能在该特定模块中使用。另一方面,compile将依赖关系“泄漏”到其他模块,因此您可以导入和使用dep带入其他模块的类。如果您需要此行为,则执行此操作的新方法是使用api

此更改特别针对多模块项目,因为它可以帮助避免在构建期间重新编译模块时不进行更改。

但是,如果您从旧项目迁移,则可能(ab)使用compile来使用在其他模块中声明的依赖项,而无需再次明确声明它们。

您可以继续使用compile,但请记住它已被弃用,很快就会删除。

有关更深入的解释,请参阅here

答案 2 :(得分:0)

修改build.gradle (Module:app)并将SDK版本更改为27.1.1 例如:

defaultConfig {
        applicationId "com.projectname"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

implementation 'com.android.support:appcompat-v7:27.1.1'

并重建项目并重启android studio