当构建你的Android应用程序时,你可能会发现一个错误,说软件包android.support.annotation
不存在。
下面是一个错误的例子。
error: package android.support.annotation does not exist
error: cannot find symbol class NonNull
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
通常情况下,上述错误发生在你将你的Android应用程序迁移到使用androidx
库时。
androidx
是Android Jetpack库所使用的命名空间。它是一组Android支持库,帮助你开发Android应用程序。
androidx
包完全取代了android.support
包,并且新的功能将被添加到androidx
。
import
当你使用androidx
,你需要更新你的Android源代码,用androidx.annotation
包替换所有android.support.annotation
包的语句。
下面是一个替换使用FloatRange
注释的import
语句的例子。
// import android.support.annotation.FloatRange;
import androidx.annotation.FloatRange;
public class Color {
@FloatRange(from=0.0,to=1.0)
public float makeOpaque() {
return (float) 0.5;
}
}
你可以尝试使用Android Studio的AndroidX迁移功能来帮助你自动完成这个过程,而不是逐个替换import
行。
在你迁移到AndroidX之前,请先将你的注解库依赖关系更新到28.0
版本。
dependencies {
implementation 'com.android.support:support-annotations:28.0.0'
}
这是必须的,因为AndroidX版本1.0.0
,相当于支持库版本28.0.0
。
如果你使用较少的支持库版本,在迁移后构建你的应用程序时可能会出现其他错误。
要开始迁移,在你的gradle.properties
文件中添加以下两行。
android.useAndroidX=true
android.enableJetifier=true
接下来,从你的Android Studio顶部菜单中选择Refactor > Migrate to AndroidX。
一旦你完成审查并让Android Studio进行重构,所需的androidx
依赖项应该被添加到你的build.gradle
文件中。
你也应该看到import
行被替换成新的。
如果你在迁移到AndroidX后仍然看到构建错误,那么你需要手动替换import
语句。
右键点击你的应用程序包,打开上下文菜单,然后选择Replace in Files...菜单,如下所示。
Android Studio文件中的替换菜单
](android-studio-replace-files.png)
在弹出的窗口中,目标是用androidx.annotation
替换你所有的文件android.support.annotation
。
下面的截图应该有帮助。
替换安卓注解的导入
如果你想逐个审查重构,就点击替换,或者点击全部替换,一次性重构所有出现的情况。
现在注解库的问题应该已经解决了。
解决React Native应用程序中的注解错误
如果你正在使用React Native构建一个Android应用程序,那么你还需要在完成上述所有步骤后运行 jetifier
包,然后完成上面所有的步骤。
注意:你需要使用Android Studio迁移React Native Android应用程序,在Android Studio中打开android/
文件夹。
当你使用Android Studio迁移你的本地Java代码时,node_modules
文件夹中的React Native模块可能仍然包含使用Android支持库的代码。
jetifier
模块重构了包含在你的React Native应用程序中的Java代码,以使用androidx
,而不是android.support
命名空间。
使用Android Studio迁移到AndroidX后,用NPM运行以下步骤。
npm install --save-dev jetifier
npx jetify
或者如果你使用Yarn。
yarn add jetifier
yarn jetify
你的node_modules
文件夹中使用旧的Android支持库的import
语句将被替换为androidx
。
一旦完成,你应该可以运行你的React Native应用。
npx react-native run-android
你可能还想在你的postinstall
脚本中包含对jetify
的调用。
"scripts": {
"postinstall": "jetify"
}
当你用npm install
或npm update
更新你的Node模块依赖时,你需要再次运行jetify
命令。
将jetify
添加为postinstall
命令将使 Node 在安装后自动运行它。
现在你已经学会了如何在你的Android应用程序中修复android.support.annotation
包不存在的错误。
谢谢你的阅读!我希望这个教程对你有用。🙏