android兩個app合併
概述
最近公司需要將原來的app和現在的app合併(主要是為了用原來的功能),先說一下思路,分成一個主module和一個附module,其實就是一個app新增一個library,下面總結一下遇到的錯。
將附module新增為library
1.首先在主module中通過File-->New-->Import Module引入附工程的module
2.開啟附module的build.gradle修改apply plugin: 'com.android.application'為apply plugin: 'com.android.library'
這樣就將你的附工程油app改為了library了,否則回報這個錯
各種報錯解決
1.如果你專案用到了Butterknife,或者onClick用到了switch(v.getId())的獲取控制元件那麼都會報錯,因為附module的R.java裡面的id都是變數(沒用final修飾),而主module的R.java的id是常量(用final修飾),這是因為當附module新增到主moudle時兩份R.java檔案裡面的id可能衝突,這時會修改附module的R.java檔案,所以不能用final修飾。而註解和switch都只能用常量,switch還是乖乖改成if else吧。Butterknife提供瞭解決辦法,在你工程的build.gradle中新增如下依賴,用8.8.1的版本我這裡報錯,可能有衝突
然後在附module中新增
這個外掛是用來生成R2.java檔案的,R2.java檔案是copy的R.java檔案的,但是多了final修飾(Butterknife最終findViewById時還是通過R.java檔案找的)。
詳情https://github.com/JakeWharton/butterknife
2.接下來你可能出現依賴衝突
,解決辦法,將依賴統一管理起來,在工程的build.gradle做統一依賴配置
這樣在各個module引用就沒問題了
3.執行時又可能出現layout重名衝突,由於兩個module都有同名的layout.xml檔案,導致id錯亂,只需要把附module的id對應的layout檔案重新命名就好了
到這就差不多了