两个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 包有重复,因此会提示:

解决方案:找到重复的包,然后删除了

(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的认知(可以多参考官方文档)

时间: 2024-11-01 14:36:44

两个app 的合并的相关文章

算法--两个有序数组合并

两个有序数组合并 关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉 第15节 有序数组合并练习题 有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B.请编写一个方法,将B合并入A并排序. 给定两个有序int数组A和B,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组. Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class Merge {

将两个有序链表合并

题目:已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序.(保留所有结点,即便大小相同) 循环实现: 1.重新申请一个头结点,使用指针p指向他,每新加一个结点,就将指针p后移一位,即指针p永远指向新链表的尾结点 2.由于所用链表第一个结点不赋值,因此指针需要开始从头结点的下一个结点开始判断,如果两个指针都为非空,将data域较小的指针连在新链表的末尾 3.当两个指针有一个到达链表的结尾时,将没有到达末尾的链表连接到新链表之后 递归实现: 1.函数返回条件是有一个链表结

ios两个app之间跳转,传值的实现

两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个APP的url地址 3.需要跳转的时候 NSString *urlString = [NSString stringWithFormat:@"AppJumpSecond://%@",textField.text]; [[UIApplication sharedApplication] open

C/C++,数据结构实现两个链表的合并(尾插法建立单链表,求链表长度,直接插入排序)

1题目 实现两个链表的合并 2基本功能要求: 1.建立两个链表A和B,链表元素个数分别为m和n个. 2.假设元素分别为(x1,x2,-xm),和(y1,y2, -yn).把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,-xn,yn,-,xm 当n>m时,C=y1,x1,y2,x2,-ym,xm,-,yn 3.输出线性表C: 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D. 3测试数据: (1)A表(30,41,15,12,56,80) B表(23,56,

两个数组的合并问题

编写JAVA程序,实现两个数组的合并,并按升序排列合并后的数组 假定现有两个数组,分别为: int[ ] arr1={3, 1, 23}; int[ ] arr2={27, 7, 2}; 设计程序,将两个数组合并成一个数组,并按升序排列合并后的数组,输出合并前和合并后的数组信息 要求: 1.使用Arrays.copyOf( )方法实现数组复制 2.使用Arrays.sort( )方法实现数组排序 3.使用Arrays.toString( )方法输出数组成员 import java.util.Ar

两个链表的合并

主要功能: 实现两个链表的合并 基本功能要求: (1)建立两个链表A和B,链表元素个数分别为m和n个. (2)假设元素分别为(x1,x2,-xm),和(y1,y2, -yn).把它们合并成一个线性表C,使得: 当m>=n时,C=x1,y1,x2,y2,-xn,yn,-,xm 当n>m时,C=y1,x1,y2,x2,-ym,xm,-,yn 输出线性表C: 测试数据: 1) A表(30,41,15,12,56,80) B表(23,56,78,23,12,33,79,90,55) 2) A表(30,

两个App之间的跳转 并传值

两个App之间的传值最主要的是方法是 Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.app2");其他的传值用Intent完成就行 与activity之间的传值类似 (还可以自定义activity的权限) APP1: package com.example.app1; import android.content.Intent; import android.support.v7.a

两个数组去重合并

import java.util.HashSet; import java.util.Set; public class Demo2 { /* * 两个数组去重合并 */ public static void main(String[] args) { //初始化测试数据 int[] a = {1,3,3,2}; int[] b = {3,3,5,6}; //使用set类的HashSet对象保存两个数组中的值,因为该对象内的数值不允许重复,所以会自动删除数组中的重复值 Set c = new H

Error:Execution failed for task ':app:processDebugManifest'. 合并冲突

1. Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed : Attribute [email protected] value=(false) from AndroidManifest.xml:16:9-36 is also present at [com.github.devlight.shadowlayout:library:1.0.2] AndroidManifest.