Android中applicationId与package name的区别

来源:互联网 发布:linux 删除组成员 编辑:程序博客网 时间:2024/05/02 02:00

今天在做项目的时候遇到了一个问题,我们打算做微信登录,我是用友盟做的,在导入友盟的sdk之后,按照文档都配置好了,结果登录完微信之后没有走相应的回调。然后我重新看了下友盟的文档,发现给微信的WXEntryActivity设置name的时候必须包名要统一,否则就不会走正常的回调,于是我定好了问题所在。那么为什么会出现这个问题呢,这就需要引出今天的话题了。我在给WXEntryActivity设置name的时候是按照清单文件里的package来弄得,(我用的ide是android studio 我的appid不是写死的 测试版和正式版的后缀不一样),而我name那却是按package写死的。

首先我们要明白applicationId的含义是什么,applicationId在Android系统中是作为应用的唯一标识,即在一个Android设备中所有的应用程序的applicationId都是唯一的。这意味着,一旦你已发布的程序使用了这个applicationId你就无法再修改它。如果修改了,那么这个应用程序就会被系统当作是一个全新的应用程序,和你之前的应用程序是相互独立的。

我们看一下清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.test.app"
    android:versionCode="1"
    android:versionName="1.0" >
在这我们需要注意一下,在eclipse中是没有applicationId这个概念的,在elcipse中applicationId即等同于package name,也就是我们清单文件中声明的package,它是作为一个应用的唯一标识。而在android studio中将这两个概念进行了隔离,我们可以在gradle文件中配置applicationId作为应用的唯一标识,假如没有在gradle中进行相应配置,那么applicationId就会默认为package name,不过我们一般会进行配置。所以package name在android studio中理解为一个查询类的路径比较合理,因为我们在配置四大组件的时候,name是可以缩写的,而package name就是我们可以省略的部分

需要注意的是,我们在进行开发的时候,用到的一些三方sdk(例如友盟,百度等等)需要我们的包名,这的包名指得是applicationId而并非package name,当然在eclipse中也就没有区分了,因为它只有package name。

在android studio中设置applicationId有两种方式,如下图:

1.在gradle中修改:



2.图形界面修改:


ok ~



1 0
原创粉丝点击