更新Android Studio并将Gradle更新为3.1后,我将所有compile
语句更改为implementation
。但是当我构建时,android studio无法解析第三方库中的导入。
场景:主项目导入子模块,该子模块也导入jar文件。
当我尝试将jar文件中的类导入主项目时,android studio无法解析它。
如何在不必将jar文件作为依赖项添加到主项目中的情况下导入单个文件?
答案 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
来缩短构建时间。
您可以看到implementation
和api
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