`
ch_kexin
  • 浏览: 898810 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

applicationId和packageName,以及在Manifest中使用${applicationId}写法

 
阅读更多

applicationIdpackageName

1. IDEEclipse

2. IDEAndroid Studio

  • 理论上来讲applicationIdandroid设备以及google play所公认的唯一标示。
  • 若未配置applicationId时,google play无法上线(据查)
  • 配置applicationId可以用作同一工程发布略有差异的不同apk,比如收费版和免费版、代码相同标示不同的渠道包等。
  • 配置方法(在appbuild.gradle中):

    • 一般配置

      android {
          ......
          defaultConfig {
              applicationId "sp.com.learncomposite"
              ......
          }
      }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 设置不同的applicationId配置 
      其中关于productFlavors的应用可以参考这篇文章很详细:链接,或者参考官方文档:链接1链接2

      android {
          ......
          productFlavors {
              pro {
                  applicationId = "sp.com.learncomposite.pro"
              }
              free {
                  applicationId = "sp.com.learncomposite.free"
              }
          }
      
          buildTypes {
              ......
              debug {
                  applicationIdSuffix ".debug"
              }
          }
      }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
  • release打包时,在签名界面,可以选择你将要打出的包,也可以多选并同时打出: 

  • debug调试时,可以再Android studio左下角的Build Variants标签中选择当前调试的是哪个包: 

2.2.2 packageName

  • 将仅被代码(如资源文件R.java)或Manifest清单中声明(如类的包路径和packageName相同时,activityname缩写为”.xxxActivity“)使用。

2.2.3 两者纠缠的关系

  • applicationId不存在时,applicationId将默认为packageName
  • applicationId存在时,packageName仅有其本身的功能,而applicationId将作为唯一标示。

3. 在Manifest中使用${applicationId}

  • Provider在声明android:authorities(该值必须唯一)时,如前缀为写死的包名字符串,当出现需要同一工程分包、分渠道打包时,安装在同一android设备将导致 INSTALL FAILED CONFLICTING PROVIDER 的报错(使用adb安装会有提示),这时可以使用${applicationId},这将避免android:authorities值非唯一的问题。

    <provider
        android:name="xxxx.xxxx.xxx.xxxProvider"
        android:authorities="${applicationId}.xxxx"
        android:grantUriPermissions="true"
        android:exported="false"/>
    • 1
    • 2
    • 3
    • 4
    • 5
  • ${applicationId}也可以用在Manifest中其他需要唯一的取值情况,这种使用方式很灵活。

分享到:
评论

相关推荐

    Android applicationId和包名的区别总结

    包名的定义在清单文件中,例如:&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplicationtest" &gt;。 应用程序 ID 和包名的区别 应用程序 ID 和包名是相互独立...

    Android package属性、package name和Application ID三者的联系及区别

    在Android开发中,了解`package属性`、`package name`和`Application ID`三者之间的关系和区别至关重要。这三个概念都是构建和管理Android应用程序时的关键元素。 首先,`package属性`是在`AndroidManifest.xml`...

    Android 基于高德最新SDK实现(定位,发送地址 )

    基于最新的高德SDK修改,AMap3DMap_6.0.1_AMapSearch_5.7.0_...注:申请key时包名一定要确定好:manifest-&gt;packagename,还有build.gradle-&gt;applicationId,还有hash1也要和studio中的对应,笔者在这里踩了1天深坑

    Android 多包名打包应用

    包名不仅用于区分不同的应用,还与AndroidManifest.xml文件中的 `&lt;manifest&gt;` 标签中的 `package` 属性关联,用于定义应用的权限、组件等。 要实现多包名打包,我们可以通过构建过程中的变量替换来实现。Android ...

    Android多渠道包名替换

    例如,将原始的`&lt;manifest package="com.example.myapp"&gt;`改为`&lt;manifest package="${applicationId}.$channelName"&gt;`。 4. **编译多渠道包**:运行Gradle构建,通过指定构建变体(例如`./gradlew assembleChannel1...

    Hbuilder项目Android Studio本地打包详细步骤

    - **Build.gradle中的applicationId**:确保`build.gradle`中的`applicationId`与`manifest.json`中的`package`一致,否则会导致打包失败。 - **检查资源文件**:确保所有资源文件都已正确复制到指定位置。 - **测试...

    Android之泡泡效果bubble

    在`createBubble`方法中,你需要使用`NotificationCompat.Builder`创建一个通知,然后使用`NotificationManagerCompat`的`createBubble`方法将通知转换为泡泡: ```kotlin private fun createBubble() { val ...

    Android Studio 一个工程打包多个不同包名的APK实例详解

    在上面的代码中,我们使用了 applicationId 来设置每个 APK 的包名,并使用 resValue 来设置应用程序的名称。在 AndroidManifest.xml 文件中,我们可以使用 ${app_icon} 来设置应用程序的图标。 修改 ...

    Android编程获取包名,版本信息及VersionName名称的方法

    在Android编程中,获取应用程序的包名、版本信息以及VersionName是常见的需求,尤其是在进行版本升级或者数据分析时。本文将详细讲解如何通过代码实现这些功能。 首先,Android应用的包名(PackageName)是应用程序...

    2AndroidManifest文件介绍.docx

    在Android应用开发中,`AndroidManifest.xml`文件扮演着至关重要的角色。它不仅是应用程序的核心配置文件,还是应用与Android系统进行沟通的重要桥梁。通过该文件,开发者可以声明应用的组件(如Activity、Service、...

    Android 7.0行为变更 FileUriExposedException解决方法

    在这个示例中,android:authorities 属性应该是唯一的,推荐使用【应用包名+fileprovider】,推荐这样写android:authorities=”${applicationId}.file_provider”,可以自动找到应用包名。meta-data 标签指定了一个...

Global site tag (gtag.js) - Google Analytics