兩個app 的合並


  我們需要把兩個app 合並在一起,就是在原有項目基礎上添加一個功能使用。如下有項目a和項目b:

  一開始,我們把項目b獨立成一個module,然后,作為一個庫給項目a調用。

問題是,項目b 已有的application、activity和重復的包, 這個需要怎樣解決呢?

   項目b的application 是可以和項目a的application合並在一起的,但是activity ,就需要想辦法,問題是  只有主要項目才有activity?普通項目是沒有的??

   后來,由於沒把握,就還是采用傳統方法,直接分離項目b ,資源文件放在res  , java文件放在src,application 合並在一起,androidmanifest合並在一起。

   

  1.主要遇到的問題是:

  (1)由於引入的第三方庫最低支持版本高於項目A的最低支持版本,因此會提示:

Error:Execution failed for task ‘:app:processDebugManifest’. 
> Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library [jp.wasabeef:blurry:1.0.0] /Users/xxx/xxx/app/build/intermediates/exploded-aar/jp.wasabeef/blurry/1.0.0/AndroidManifest.xml 
Suggestion: use tools:overrideLibrary=”jp.wasabeef.blurry” to force usage

       解決方案:提高第三方庫的最低支持版本或者降低項目A的最低支持版本,或者根據提示直接使用 use tools:overrideLibrary =“xxx.xxx.xxx” 來解決問題

      

      (2)由於導入的jar 包有重復,因此會提示:

1411439813_974342.jpg

           解決方案:找到重復的包,然后刪除了

      (3)由於沒有分配足夠的內存給應用,因此出現了

            Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded

             解決方案:在build.gradule 添加了

                            dexOptions{javaMaxHeapSize "2g"}

  (4)App的所有代碼都在一個Dex文件里面,Dex的方法數控制在0到65536間,如果Dex 里的方法數過多的話,會導致不能運行。因此,根據官方的說法,需要           a.在gradule.gradule 的defaultConfig中添加

                    multiDexEnabled true

      b.在application 中添加這段(之前是把方法分離了,然后需要再合並到同一個application上)

    @Override     

         protected void attachBaseContext(Context base) 

        {         

         super.attachBaseContext(base);         

         MultiDex.install(this);          

         }

 

主要的問題,也是如上,總的來說,對於android studio  的很多認識,比如快捷鍵,gradule、module、project的認識,調試的使用,都是不熟悉,需要自己逐步提升對android studio的認知(可以多參考官方文檔)

 

 

 

  


免責聲明!

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



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