欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別

 更新時間:2016年12月27日 17:09:54   投稿:lqh  
這篇文章主要介紹了Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別的相關資料,需要的朋友可以參考下

Android package屬性、package name和Application ID三者的聯(lián)系及區(qū)別

  1. package屬性:在AndroidManifest.xml文件中。
  2. package name:應用程序的包名。
  3. Application ID:模塊defaultConfig塊下的applicationId屬性。

設置Application ID

每個Android應用程序都有唯一一個類似Java包名的Application ID,比如com.example.myapp。在Android設備和Google應用商店上,Application ID是您應用的唯一標識。如果您想上傳應用程序的新版本,那么Application ID必須和原來相同。如果您改變了新版本應用程序的Application ID,那么Goolge應用商店會認為這是個完全不同的應用程序。所以,從您第一次上傳應用程序開始,絕對不要更改Application ID。

Application ID定義在模塊build.gradle的applicationId屬性中,如下所示:

android {
  defaultConfig {
    applicationId "com.example.myapp"
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
  }
  ...
}

當您在Android Studio中創(chuàng)建新項目的時候,您可以設置applicationId屬性,這時,Application ID和package name是精確匹配的。除此之外,兩者是完全獨立的。當然,您可以更改package name,但是這不會影響到Application ID。反之亦然(再次提醒:在您上傳應用程序之后,不要修改Application ID,不要修改Application ID,不要修改Application ID)。然而,您應該意識到,修改package name 還有另一個后果。這部分詳見修改包名(下文有講)。

盡管Application ID看起來和傳統(tǒng)的Java包名很類似,但是Application ID的命名規(guī)則有更多的限制:

  • 最少有兩段(至少一個.隔開)
  • 每段開頭必須是字母
  • 所有的字符只能是字母、數(shù)字和下劃線

注意:在以前,Application ID 直接綁定package name。所以,有些Android APIs在方法名或者參數(shù)名中使用“package name”,但是實際上指的是Application ID。舉個栗子, Context.getPackageName()方法返回Application ID。所以沒必要在您應用程序代碼之外分享真正的package name。

警告:如果你使用WebView,考慮使用您的package name作為您Application ID的前綴,否則,您可能遇見

issue 211768。

修改構建版本的Application ID

當為您的應用程序構建APK時,構建工具使用build.gradle文件中的defaultConfig塊中定義的Application ID標識APK(如下所示)。但是,如果你想創(chuàng)建不同版本的應用程序并且在Google應用商店中顯示不同的信息,例如“免費版”和“專業(yè)版”。您需要構建擁有不相同Application ID的不同版本。

在這種情況下,每個構建版本應該定義不同的product flavor,且每個flavor都在productFlavors{}塊內(nèi)部。對于每個flavor,您可以重新定義applicationId屬性,或者給默認的applicationId増加前后綴,如下所示:

android {
  defaultConfig {
    applicationId "com.example.myapp"
  }
  productFlavors {
    free {
      applicationIdSuffix ".free"
    }
    pro {
      applicationIdSuffix ".pro"
    }
  }
}

這樣定義之后,“free”的Application ID是”com.example.myapp.free“。

在構建類型上,你也可以使用后綴,如下所示:

android {
  ...
  buildTypes {
    debug {
      applicationIdSuffix ".debug"
    }
  }
}

由于Gradle首先應用product flavor之后才應用build type,所以”free debug”版本現(xiàn)在的Application ID是”com.example.myapp.free.debug”。如果你想在同一部手機上同時安裝debug和release兩個版本,這將非常有用,因為沒有兩個應用程序可以擁有相同的Application ID。

記住一點,同一應用程序擁有不同的Application ID,Google應用市場將會認為這是兩個應用程序。所以,如果您為了適配不同的設備配置(例如不同的API等級),并且想用相同信息去分發(fā)多個應用程序。那么對于每個版本,您必須使用相同的Application ID和不同的versionCode。

警告:為了兼容先前的SDK工具,如果你沒有在build.gradle中定義applicationId屬性,那么構建工具將使用AndroidManifest.xml中的package name作為Application ID。在這種情況下,重命名package name意味著同時重命名了Application ID。

提示:如果您需要在manifest文件中引用Application ID,可以在manifest的屬性中使用${applicationId}占位符。Gradle在構建時會自定替換這個標識為真正的Application ID。更多詳見 Inject Build Variables into the Manifest.

測試專用Application ID

默認情況下,構建工具會使用指定構建版本的Application ID(附加.test)將Application ID應用到您的instrumentation測試APK。例如,構建版本為”com.example.myapp.free”的測試應用程序真正的Application ID是“com.example.myapp.free.test“。

通常這不是必要的,你可以在defaultConfig或者productFlavor塊中定義testApplicationId屬性來修改Application ID。

注意:為了避免與測試應用程序命名沖突,構建工具為測試應用程序使用基于測試Application ID生成R.class的命名空間。

修改package name

雖然package name默認完全匹配Application ID,但是您仍然可以修改它。如果您想修改package name,請留意package name(項目目錄結構)和AndroidManifest.xml中的package屬性是完全對應的。如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.myapp"
  android:versionCode="1"
  android:versionName="1.0" >

對于Android構建工具來說,package屬性用于兩件事情:

應用于您應用程序生成R.Java類的命名空間。

例如:在上面的manifest文件中。R類是“com.example.myapp.R”

用于解析AndroidManifest.xml文件中任何類的相對路徑。

例如:在上面的manifest文件中。一個activity定義為\,將會被解析為com.example.myapp.MainActivity。

因此,package屬性的值應該總是和工程的package name相同。當然,你可以給工程設置子包名。這些文件必須從package屬性的命名空間導入R類,并且任何定義在manifest中的組件必須增加子包名(或者寫全路徑)。

如果您需要完全重命名package name,請確保您已經(jīng)更新package屬性。直到您用Android studio的工具重命名包,之后這些自動保持同步。(如果沒有保持同步,您的代碼將不能正確解析R類,因為它不再是相同包下,并且manifest也將不能正確識別您的activities和其它組件)。

您必須在AndroidManifest.xml文件中置頂package屬性,如果您另外添加了manifest文件,請注意,由最高優(yōu)先級manifest文件提供的package name始終用于合并最終的manifest。更多:[Merge Multiple Manifest Files。

望周知:盡管您的項目可以設置package屬性不等于applicationId,然并卵。構建工具在最后構建的時候?qū)椭艫pplication ID并設置為您應用程序唯一的package屬性的值。所以,如果您在構建成功之后檢查AndroidManifest.xml文件,請不要驚訝package屬性發(fā)生變化。在Android平臺和Google應用商店,package屬性才是真正作為您應用程序唯身份憑證。所以,一旦使用原始值構建(使用命名空間的R類解析manifest中的組件),構建工具將會丟棄package屬性的值,并且使用Application ID替換。

原文鏈接:https://developer.android.com/studio/build/application-id.html#change_the_package_name

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Android CardView+ViewPager實現(xiàn)ViewPager翻頁動畫的方法

    Android CardView+ViewPager實現(xiàn)ViewPager翻頁動畫的方法

    本篇文章主要介紹了Android CardView+ViewPager實現(xiàn)ViewPager翻頁動畫的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Android中Listview下拉刷新和上拉加載更多的多種實現(xiàn)方案

    Android中Listview下拉刷新和上拉加載更多的多種實現(xiàn)方案

    本文大概通過三種方案給大家介紹了Android中Listview下拉刷新和上拉加載更多知識,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2016-12-12
  • Android實現(xiàn)頂部弧形背景效果

    Android實現(xiàn)頂部弧形背景效果

    在當今移動互聯(lián)網(wǎng)應用中,界面設計的美觀與交互體驗往往成為用戶評價一款產(chǎn)品的重要因素之一,本文將詳細介紹如何在 Android 應用中實現(xiàn)頂部弧形背景效果,通過自定義 View、繪制原理和動畫特效等多種技術手段,打造出既美觀又具有較好擴展性的界面背景效果
    2025-04-04
  • Android Service總結及詳細介紹

    Android Service總結及詳細介紹

    本文主要介紹Android Service的知識,這里整理了詳細資料及簡單實現(xiàn)示例代碼,有需要的小伙伴可以參考下
    2016-09-09
  • Android實現(xiàn)表情功能

    Android實現(xiàn)表情功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)表情功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android實現(xiàn)分享長圖并且添加全圖水印

    Android實現(xiàn)分享長圖并且添加全圖水印

    這篇文章主要介紹了Android實現(xiàn)分享長圖并且添加全圖水印的相關資料,需要的朋友可以參考下
    2017-03-03
  • Android自定義折線圖控件的完整步驟

    Android自定義折線圖控件的完整步驟

    折線圖是常用的圖表之一,最近的工作中又遇到了相關的需求,所以下面這篇文章主要給大家介紹了關于Android自定義折線圖控件的完整步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Android實現(xiàn)圓角圖片

    Android實現(xiàn)圓角圖片

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圓角圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Android自定義控件實現(xiàn)顏色選擇器

    Android自定義控件實現(xiàn)顏色選擇器

    這篇文章主要為大家詳細介紹了Android自定義控件實現(xiàn)顏色選擇器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android ANR(Application Not Responding)的分析

    Android ANR(Application Not Responding)的分析

    這篇文章主要介紹了Android ANR(Application Not Responding)的分析的相關資料,這里說明什么原因出現(xiàn)應用程序的強制關閉,并說明該如何避免,需要的朋友可以參考下
    2017-08-08

最新評論