MacOS下Android Studio Arctic Fox生成Javadoc找不到Android包问题求助
问题描述
运行环境:MacOS Big Sur 11.5.2,Android Studio Arctic Fox 11.0.10
执行生成Javadoc操作时出现大量Android原生包/类找不到的错误,报错示例如下:
/Users/.../sdk/src/main/java/datos_health/com/sdk/app/fragments/GlucoseWeeklyPagerAdapter.java:3: error: package android.os does not exist import android.os.Bundle; ^ /Users/.../sdk/src/main/java/datos_health/com/sdk/app/fragments/BaseHistoryPagerFragmentAdapter.java:3: error: package android.view does not exist import android.view.ViewGroup; ^ /Users/.../sdk/src/main/java/datos_health/com/sdk/app/fragments/BaseHistoryPagerFragmentAdapter.java:36: error: cannot find symbol public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { ^ symbol: class ViewGroup location: class BaseHistoryPagerFragmentAdapter
已尝试的无效方案
- 改用IntelliJ执行生成操作,报错完全一致,未生成任何文档
- 命令行直接执行javadoc命令,结果相同
- 更换为更简单的Android项目代码执行生成操作,结果相同
- 添加参数
-bootclasspath /Users/.../Library/Android/sdk/platforms/android-30/android.jar,报错:option --boot-class-path not allowed with target 11 - 添加参数
-sourcepath /Users/.../Library/Android/sdk/platforms/android-30/android.jar,报错无变化 - 添加参数
-classpath /Users/.../Library/Android/sdk/platforms/android-30/android.jar,报错变为找不到android.compat.annotation相关包:
/Users/.../Library/Android/sdk/sources/android-30/android/content/res/Resources.java:44: error: package android.compat.annotation does not exist import android.compat.annotation.UnsupportedAppUsage; ^ /Users/.../Library/Android/sdk/sources/android-30/android/content/pm/ActivityInfo.java:21: error: package android.compat.annotation does not exist import android.compat.annotation.UnsupportedAppUsage; ^
- 切换JDK为Android Studio内置JDK,结果无变化
解决方案
方案一:通过Gradle任务生成(推荐,无需手动配置依赖路径)
在对应模块的build.gradle文件中添加如下配置:
// 应用插件为com.android.library或com.android.application都适用 android.libraryVariants.all { variant -> task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { description "Generates Javadoc for ${variant.name}." // 仅引入项目自身源码,不包含SDK源码 source = variant.javaCompileProvider.get().source // 自动注入编译所需的全部classpath,包括android.jar和所有依赖包 classpath += variant.javaCompileProvider.get().classpath classpath += files(android.getBootClasspath()) // 排除不需要生成文档的自动生成类 exclude '**/R.html', '**/R.*.html', '**/index.html', '**/BuildConfig.*', '**/Manifest*.*' // JDK11+适配参数 options.addStringOption('Xdoclint:none', '-quiet') options.addBooleanOption('ignore-source-errors', true) // 自定义文档输出路径 destinationDir = file("$buildDir/docs/javadoc/${variant.name}") } }
同步Gradle后,在Android Studio右侧Gradle面板中找到对应模块下的Tasks > documentation > generate[VariantName]Javadoc任务,双击运行即可在指定输出路径得到生成好的Javadoc。
方案二:手动执行命令行/Android Studio可视化生成
- 先确认不要把Android SDK的
sources目录加入源码扫描范围,仅指定你自己项目的源码目录 - 在Javadoc参数中添加如下配置,注意替换为你本地的实际路径:
-classpath "/Users/你的用户名/Library/Android/sdk/platforms/android-30/android.jar:/Users/你的用户名/Library/Android/sdk/platforms/android-30/optional/androidx.annotation_annotation.jar" -Xdoclint:none --ignore-source-errors
如果还有其他第三方依赖的类找不到,可以把对应依赖的jar路径也追加到-classpath的引号内,多个路径用冒号分隔(Mac/Linux环境)。
内容的提问来源于stack exchange,提问作者yadit
相关产品推荐
相关产品推荐

