相关疑难解决方法(0)

lint任务上的gradle构建失败

我有一个简单的Android项目,我用Android Studio 0.4.0创建.我使用Gradle 1.9和Gradle Android插件0.7.昨天我在我的gradle构建脚本中添加了Jake Wharton的ButterKnife库:

dependencies {
            compile 'com.android.support:support-v4:19.0.0'
            compile 'com.android.support:appcompat-v7:19.0.0'

            // Butterknife
            compile 'com.jakewharton:butterknife:4.0.1'
}
Run Code Online (Sandbox Code Playgroud)

当我从Android Studio运行应用程序时,构建运行正常并在我的设备上正确执行.但是当我尝试(从命令行)时gradle build,构建失败.这是我的皮棉报告中的一部分:

InvalidPackage: Package not included in Android

/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

94
推荐指数
6
解决办法
11万
查看次数

如何使用-Xlint重新编译:弃用

我不使用Android Studio,但我使用命令行构建所有内容build.gradle.我生成一个像这样的Lint报告:

./gradlew lint
Run Code Online (Sandbox Code Playgroud)

这正确地生成了一个Lint报告,但它也说明了这一点:

Note: MyActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Run Code Online (Sandbox Code Playgroud)

这让我想知道我怎么能这样做?我尝试过以下方法:

./gradlew lint -Xlint:deprecation
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它说:

Problem configuring task :app:lint from command line.
Unknown command-line option '-X'.
Run Code Online (Sandbox Code Playgroud)

那我怎么-Xlint:deprecation能通过gradle 传递到Lint?

android lint gradle

33
推荐指数
1
解决办法
3万
查看次数

如何检测已弃用的 androidx.legacy.widget.Space 类?

语境

我在Android 应用程序项目的androidx.legacy.widget.Space布局中使用:

<androidx.legacy.widget.Space
    android:layout_width="match_parent"
    android:layout_height="@dimen/space_height" />
Run Code Online (Sandbox Code Playgroud)

该类被标记为@Deprecated- 应使用框架 Space 类

<androidx.legacy.widget.Space
    android:layout_width="match_parent"
    android:layout_height="@dimen/space_height" />
Run Code Online (Sandbox Code Playgroud)

查找已弃用的 API 的使用情况

我在Android Studio 4.2 Canary 7中运行Inspect Code...orRun inspection by Name ...来获取 Java 或 XML 文件(参见屏幕截图)...

已弃用的 API 使用(Java | 代码成熟度)

XML 中已弃用的 API 使用

...并在我通过 shell 命令构建时使用编译器参数..

options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
Run Code Online (Sandbox Code Playgroud)

...但Space报告已弃用的类用法。我如何检测它(以及任何其他此类情况)?

更新2020年8月27日

在 Android Studio 中,Java 和 XML 的“已弃用的 API 使用...”检查均已激活,如设置屏幕截图所示。

已弃用的 API 使用

有关的

android gradle android-lint android-studio androidx

5
推荐指数
1
解决办法
1938
查看次数

是否可以找出项目中所有已弃用的函数?

我想从我的 Android Studio 项目中查找已弃用的函数。我有一个较旧的项目,我想删除所有已弃用的功能

optimization android android-studio-3.0

1
推荐指数
1
解决办法
2230
查看次数