合并两个app时遇到的问题

项目中遇到了需要将其他已经上线App引入到我们的app中,然后我们app首页提供入口,采用方案(Module引入来依赖)

合并过程中遇到的问题:

  • Error: Configuration with name ‘default’ not found in Android Studio
    1.两个APP,A和B;把B作为一个Library的module导入A的project中;修改B的 build.gradle 文件,最上面改为apply plugin: ‘com.android.library’
    2.将B中引用的Module都单独拿出来放到A下面与B平级
  • Error:Library projects cannot set applicationId. applicationId is set to ‘com.coolweather.android’ in default config.
    两个APP,A和B;把B作为一个Library的module导入A的project中;删除B的build.gradle 中的applicationId

  • Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’ non-zero exit value 2

//在app的build.gradle里面添加下面这句即可
android {
    defaultConfig {
        multiDexEnabled true
    }
}
  • Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’ non-zero exit value 3
//在app.bulid里面加上这句,再rebuild ,之后再运行就行了。4g可以看电脑配置修改(2g,3g,6g,8g)
dexOptions {
    javaMaxHeapSize "4g"
}
  • B中的Application中有一些初始化的操作,如果合并到A的APP中,那么启动app就只会走A的Application,那么B中的Application中的初始化就无用了,导致有的地方使用到的就会报错;
    尝试了在A的Application初始化时候初始化B,但是一直没有找到合适的方法,并且修改起来代码耦合比较高,最后想到A的Application继承B的Application,子类初始化时候默认初始化父类,这样两个Application就都能初始化了

  • 删除B项目中清单文件中的main入口

  • 删除B项目中的applicationId

  • java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout (没有直接报com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536)

java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout
                                at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:419)
                                at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                at com.spd.ehr.activity.login.LoginActivity.initView(LoginActivity.java:56)
                                at com.spd.ehr.activity.BaseActivity.onCreate(BaseActivity.java:42)
                                at android.app.Activity.performCreate(Activity.java:5211)
                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1151)
                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2341)
                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)
                                at android.app.ActivityThread.access$600(ActivityThread.java:171)
                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
                                at android.os.Handler.dispatchMessage(Handler.java:107)
                                at android.os.Looper.loop(Looper.java:194)
                                at android.app.ActivityThread.main(ActivityThread.java:5468)
                                at java.lang.reflect.Method.invokeNative(Native Method)
                                at java.lang.reflect.Method.invoke(Method.java:525)
                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:936)
                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
                                at dalvik.system.NativeStart.main(Native Method)

65536解决方案具体见链接:65536解决方案

  • 另外注意:A 中应用B(B作为被依赖的module),A可以调用B中的东西,但是B中不能调用A中的东西

因为某些原因,这个需求最后就取消了,这里仅此记录当时的这些问题;这里的问题如果对你有帮助,那最好,如果上述中间有问题,可以留言评论,谢谢

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值