AndroidManifest.xml 在 android studio 中如何验证?

2024-03-23

android studio 如何验证 AndroidManifest.xml 和任何活动 xml?我读过了this https://stackoverflow.com/questions/10242929/validating-androidmanifest-xml-file帖子和this https://stackoverflow.com/questions/605325/where-are-the-schemas-for-xml-files-on-an-android-project并且知道 Android 清单没有实际的架构。但是 android studio 或任何验证 AndroidManifest.xml 的工具如何知道哪些标签和元素是合法的?


一切都可以在上面找到https://android.googlesource.com https://android.googlesource.com.

清单模型未写入 .xsd 文件。相反,它被写成一组对象。树可以找到here https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/

如果你从Manifest https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Manifest.java你可以看到,它引用了Application https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Application.java, List<UsesPermission> https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/UsesPermission.java等。Application https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Application.java有参考android:name https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Application.java#69 and android:label https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Application.java#73 and List<Activity> https://android.googlesource.com/platform/tools/adt/idea/+/master/android/src/org/jetbrains/android/dom/manifest/Activity.java等等。

样本来自Activity object:

@Attribute("name")
@Required
@Convert(PackageClassConverter.class)
@ExtendClass("android.app.Activity")
AndroidAttributeValue<PsiClass> getActivityClass();

正如你所看到的,这就是 Android Studio 所知道的方式activity清单内的标签必须有名称。使用了两个注释:

@Attribute("name")
@Required

其中之一是 .xml 标记属性的名称,第二个通知该属性是必需的。

可以在清单中找到可以使用的标签名称here https://android.googlesource.com/platform/tools/base/+/master/common/src/main/java/com/android/xml/AndroidManifest.java#43

可以找到Android Studio用来获取manifest属性的辅助类here https://android.googlesource.com/platform/tools/adt/idea/+/b5197d2fb96e66e6fe50aa772eaadcbed6547cc1/android/src/com/android/tools/idea/model/ManifestInfo.java

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AndroidManifest.xml 在 android studio 中如何验证? 的相关文章

  • 将ForeignCollection 转换为ArrayList - ORMLite、Gson 和 Android

    如果我的解释不太清楚 我深表歉意 但如果需要 我会添加并编辑这个问题以使其清晰 我正在开发一个 Android 应用程序 它通过外部 API 接收数据并使用 ORMLite 在本地存储数据 在本地存储数据并使用 ORMLite 之前 我有一
  • 未找到 ADB screenrecord 命令

    我无法奔跑adb shell screenrecord sdcard my mp4 我尝试运行此命令的设备规格 Honor 5C 安卓6 0 每当我运行 screenrecord 命令时 它都会显示未找到命令 D adb gt adb sh
  • Android 堆栈大小

    我如何获取和更改 Android 应用程序的堆栈大小 即使是主线程 主线程堆栈大小是在固件中设置的 无法修改 除非修改您自己手机的固件 正如斯特朗先生指出的那样 对于您分叉的线程 您可以设置自己的堆栈大小
  • 我无法从 Android 模拟器中删除日语 IME

    我已经多次看到这个问题 但答案总是 从 语言和键盘设置 菜单中取消选中 IME 问题是那里没有复选框 选择菜单 自定义区域设置 en US 菜单 设置 语言和键盘 选择语言 选择 英语 美国 菜单 设置 语言和键盘 日语输入法是唯一的输入法
  • Android中的OpenGL用于视频显示

    是否可以使用 OpenGL 来显示视频并能够在运行时调整视图大小 是的 它的工作原理是通过 glTexSubImage2D 将每个帧作为纹理上传 我已经测试了基于 FFmpeg 的解码器的输出 效果很好
  • Android studio 模拟器中运行的WebView无法访问互联网,但Chrome可以?

    我安装了 Android studio 1 0 1 并按照此页面操作https developer chrome com multidevice webview gettingstarted https developer chrome c
  • 在 Android 中完成一项活动?

    我有一些活动 Home Activity gt Activity 1 gt Activity 2 gt Activity 3 gt HomeActivity finish finish finish Home Activity gt Act
  • 在 Android Studio 中使用预构建的共享库

    我需要在我的 android 项目中使用自定义的预构建共享库 在独立 ndk 上构建为 libdynamic so 我在路径 src main 中创建了一个文件夹 jniLibs 然后在其中创建了 4 个文件夹 即 armeabi arme
  • Room - LiveData 观察器在数据库更新时不会触发

    我试图在下面的代码中找出 为什么在我用新数据填充数据库后 Room 的 LiveData observable 不会给我新的转变 这是放在我的活动的 onCreate 方法中 shiftsViewModel ViewModelProvide
  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • 如何在Android上获取角度中的按键事件?

    我们如何在 Android 上的 Angular 中获取按键事件及其值 我使用phonegap Cordova Angular JS
  • 温度转换 2 字节

    我很难转换两个字节的温度 我有一个控制单元 温度传感器 我可以在其中获取两个字节的温度消息 1 示例 message 40 25 LSBYTE 40 MSBYTE 25 0 03125 C bit temperature 25C seen
  • Android 改造参数化@Headers

    我正在使用 OAuth 每次发出请求时都需要将 OAuth 令牌放入标头中 我看到 Header注释 但是有没有办法让它参数化 以便我可以在运行时传入 这是概念 Header Authorization OAuth var api vers
  • Android Studio 3.0 - 设置未保存

    我已将 文件 gt 设置 gt 编辑器 gt 代码样式 中的 右边距 列 从默认的 100 增加到 140 不幸的是 每次重新启动 Android Studio 后 该边距都会重置 我还尝试导出和导入我的设置 但这并不能阻止重置右边距 希望
  • 如何在打开导航抽屉时使背景 Activity 变小?

    我想做我的背景Activity打开时稍微小一点Navigation Drawer 模拟存在的效果Airbnb应用 我想最好的解释是截图 但重点不是让 View 变小 而是让它成为与 Drawer 打开 关闭动画同步的动画 因此 如果您开始打
  • Android:如何停止监听电话监听器? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 为什么 PhoneCallListener 在活动完成后仍然存在 https stackoverflow com questions 11666853 android why phon
  • Android:列表视图崩溃

    我正在使用 android listview 并且它工作得很好 我的实现如下 ListView listview ListView findViewById R id list setListAdapter new ArrayAdapter
  • Android studio 问题:找不到广告:AdQuality:未指定

    我已经更新了 Android studio 刚刚打开我的项目 我收到以下错误 您能让我知道如何解决这个问题吗 Error A problem occurred configuring project memoryGameCollection
  • 膨胀类 android.support.design.internal.BottomNavigationView 时出错

    我正在制作我的第一个应用程序 这是一个简单的应用程序 带有启动屏幕和主要活动 现在我有两个构建变体 免费版本 活动底部有 Admob 横幅 付费版本 该应用程序不会在底部显示 admob 横幅 而是将其替换为用于切换活动的底部导航视图 我将
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS

随机推荐