项目中遇到了需要将其他已经上线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 中的applicationIdError: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中的东西
因为某些原因,这个需求最后就取消了,这里仅此记录当时的这些问题;这里的问题如果对你有帮助,那最好,如果上述中间有问题,可以留言评论,谢谢