更改包名與applicationID(兩者區別)


  • 我們在進行開發的時候,用到的一些第三方sdk需要我們的包名,這的包名指得是applicationId而並非package name,當然在eclipse中也就沒有區分了,因為它只有package name。

重命名包名的方法如下:

  • 在java 文件夾下新建一個package,名字隨便取,如com.dc.zsn.app。
java文件夾所在目錄.png
  • 將之前寫好的類全部選中,並拖拽到新的包中來,此時項目中的所有用到包名的地方都會隨之更改,自己再手動的更改一下AndroidManifest.xml文件中manifest下的package就好了;如果拖拽不成功,就去項目根目錄下,全部選中后,ctrl+v拷貝一下,然后手動刪除代碼中的錯誤導包,自動生成import+包名(前提是配置了自動導包)。

  • 將之前的包刪掉就可以了。

參考鏈接:https://www.jianshu.com/p/b260b051cb2a
來源:簡書

————————————————————————————————————————————————————————————————————————
 
更改applicationID
啊改代碼改到最后老是出錯,原來是applicationID更改產生的問題!!!

 1.一開始我以為,

applicationID存在於的地方

一個在 build.gradle(app)中,applicationId "xt.car"

一個在BuildConfig.java中,   public static final String APPLICATION_ID = "xt.car";

 

2.后來發現這樣也沒用。好叭感覺和依賴庫有關,太難找了,不找了 /

不能從其他BuildConfig里面去取application id,因為打包后使用的只有app模塊的id。
依賴庫的application id不能隨便改的,你一改,依賴庫有類引用R文件的話全部得手動改。
依賴庫的application id跟包名是沒有任何關系的。
依賴庫里面想要獲得application id,必須通過context.getPackageName,或者context.getApplicationInfo().packageName獲得。依賴庫的工具類,大部分都必須傳Context環境,除非一些代碼跟環境完全無關。

參考https://blog.csdn.net/he_xiang_/article/details/81080507

應用ID與包名區別

每個Android應用都有一個唯一的應用ID.在Android設備和市場上,這個ID是你應用的唯一標識.若想在市場上更新應用,新應用的ID必須和原來apk的應用ID一致.所以一旦發布了應用,就不能再改變應用ID.

在Eclipse中沒有applicationId這個概念,在Eclipse中applicationId即等同於包名。但是到了Android Studio中,這兩個概念做個區分。包名的定義在清單文件中:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  2. package="com.example.myapplicationtest" >

應用ID是在moudle層的build.gradle中定義,applicationId值即為應用ID,如下所示:

  1. android {

  2. defaultConfig {

  3. applicationId "com.example.myapplicationtest"

 


在Android Studio中創建一個新項目時,applicationId默認是和項目的包名一致的。所以常常有開發者會將兩者混淆,以為它們是一個概念。實際上,應用ID和包名是相互獨立的。改變包名不會影響應用ID,反之亦然。

通常Android的應用ID與包名是綁定的,所以在Android API中,一些方法和參數從名稱上看似乎它們返回的是包名,事實上它們返回的是應用ID值.例如,Context.getPackageName()方法返回的是應用ID,而不是包名。不信我們來看:


  1. 圖中,包名是:com.example.myapplicationtest   應用ID:com.example.myapplicationtest.id

    應用ID的命名並不是隨意的,它至少需要需遵循以下限制:

    • 應用ID至少包含兩部分(也就是說至少有一個點,如com.example);

    • 每部分必須以字母開頭;

    • 所有字符必須是字母數字或者下划線[a-zA-Z0-9_]

    • app的標識,一旦定義不能隨意改變

    注意:

    如果你使用了webview,請使用包名作為應用ID的前綴,否則,有可能會報錯.

修改包名

默認情況下,包名與應用ID是相同的。當然,開發者也可以對包名進行修改.如果開發者想要修改包名的話,注意項目目錄結構必須與AndroidManifest.xml中package屬性的包名一致.

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3. package="com.example.myapplicationtest"

  4. android:versionCode="1"

  5. android:versionName="1.0" >

package值有兩個作用:

  • 它為R.java文件提供了命名空間,例如R class的包名為com.example.myappcationtest.R

  • 決定manifest中聲明的class的相對名稱。如:manifest中聲明的<activity android:name=".MainActivity"> 的真實路徑為:com.example.myapplicationtest.ManiActivity

如果開發者想修改包名,必須確保manifest中package值也做了同步修改.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM