1. 程式人生 > >Android模組化開發遇到的問題: 資源名衝突的問題

Android模組化開發遇到的問題: 資源名衝突的問題

  • 方法一:
    保護某些 resources 不被外部訪問,可以建立res/values/public.xml,因為 public 是關鍵詞,所以需要用 new file 的方式建立。至少新增一行,未新增的視為 private。(經驗證,好像沒有效果,知道的大神幫忙留言,最好是code,謝謝)

  • <resources>
        <public name="mylib_app_name" type="string"/>
    </resources>
    
  • 方法二:
    在 library 的 build.gradle 中新增 resourcePrefix , 則所有的資源須以此 prefix 開頭,否則報錯。注意,圖片資源雖然不提示報錯誤,但是也需要修改名字。(這種方式,說白了就是用resourcePrefix來約束你資原始檔的命名,因為你如果命名不加這個字首,xml會報錯,當然你可以新增一行忽略程式碼,但是那樣又和我們加字首的初衷背道而馳了,所以還是乖乖的加字首吧;xml檔名稱要改,xml檔案中name也要改;記住,是res資料夾下面的所有你自定義的name;除了values資料夾中的xml檔名稱不需要更改外,其它的資原始檔xml名稱前也要加字首;

    )

    android {
        ...
        buildTypes {
        ...
        }
        resourcePrefix 'my_prefix_'
    }
    還有個注意事項:
  • 我們知道主工程中,不同的xml中可以將控制元件命名為相同的id,因為是唯一的final
  •  public static final int seekbar=0x7f0b006e;
  • 但是在module中,如果ID相同,會不起作用,因為不是final,所以在module中的不同xml中的ID命名還是保持唯一比較好
  •  public static int seekBarStyle = 0x7f0100ba;