当前位置: 首页 > article >正文

Android 应用包名的定义 pm list packages查询的包名

问题

在AndroidManifest和build.gradle其实都有应用包名的定义,有时候发现两者不一样,那么最终编译到软件生效的是哪个呢?

现象

连接设备后,通过adb shell pm list packages 查询应用包名,所列的名称是在build.gradle定义的。

知识介绍

设备中的应用包名主要是在以下两个位置定义的:

1、AndroidManifest.xml 文件

每个 Android 应用的包名在其 AndroidManifest.xml 文件中定义。包名通常在 <manifest> 标签的 package 属性中指定。

例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application
        ...
    </application>
</manifest>

2、build.gradle 文件

 在 app/build.gradle 文件的 defaultConfig 区域,applicationId 属性被用来指定应用的包名。虽然通常这两者是相同的,但 applicationId 是编译和发布时使用的标识

例如:

android {
    ...
    defaultConfig {
        applicationId "com.demo.myapp"
        ...
    }
}

总结:

  • AndroidManifest.xml:定义了应用的包名,用于代码和资源
    • 在module代码路径命名时使用,比如上述文件头会是 package com.example.myapp
  • build.gradle:通过 applicationId 指定了用于构建和发布的应用包名。 在设备上安装的应用程序将使用 AndroidManifest.xml 中定义的包名。
    • 编译安装到设备时查询应用时使用,比如查询app路径用:pm path con.demo.myapp,而不是com.example.myapp
    • applicationId 是决定应用在设备上唯一标识的关键属性。

应用的唯一标识包名是build.gradle定义的,通常用于 Google Play 发布;而AndroidManifset是开发代码中使用的。通常两者是一样的。


http://www.kler.cn/news/361378.html

相关文章:

  • 苍穹外卖学习笔记(三十二最终篇)
  • 在金融领域,机器学习算法优化的成功案例有哪些?
  • C++类和对象之友元
  • 【linux】线程(二)
  • 03 go语言(golang) - fmt包基本类型
  • Qt-界面优化控件样式设置(72)
  • SQL语句高级查询(适用于新手)
  • 这几次比赛题解
  • UniHttp框架直接对接第三方Http接口
  • JavaGuide (8)
  • MySQL之CRUD(下)
  • vue中加载GLB模型,计算模型的长宽高、绘制模型的边框线
  • Vue93 vue3 watch监视ref属性的说明
  • 记录:网鼎杯2024赛前热身WEB01
  • Cocos引擎
  • 十四、MySQL事务日志
  • IIC通信与MAX30102采集血样数据+V4L2框架
  • 【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突
  • 上海市计算机学会竞赛平台2024年10月月赛丙组胜率判断
  • 拍立淘按图搜索API接口系列(json数据格式示例)
  • c++ libtorch tensor 矩阵分块
  • 域4:通信与网络安全 第12章 安全通讯和网络攻击
  • 【数据结构与算法】第3课—数据结构之单链表
  • OBOO鸥柏丨《满天星(MTSTAR)》信息发布系统售后服务点位收费标准
  • Unity性能优化1【基础篇】
  • js的入口函数,及入口函数的作用