标签: android-multidex

程序类型已存在:com.android.vending.billing.IInAppBillingService

问题只发生在发布版本或生成签名的apk上,当我构建调试时 - 没有这样的问题.

问题在升级到版本3.1后立即到达

Program type already present: com.android.vending.billing.IInAppBillingService
Message{kind=ERROR, text=Program type already present: com.android.vending.billing.IInAppBillingService, sources=[Unknown source file], tool name=Optional.of(D8)}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 依赖关系:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
    implementation('org.apache.httpcomponents:httpmime:4.3') {
        exclude module: "httpclient"
    }
    implementation 'com.chauthai.swipereveallayout:swipe-reveal-layout:1.4.0'
    implementation 'com.github.clans:fab:1.6.4'
    implementation 'com.android.billingclient:billing:1.0'
    implementation 'com.nineoldandroids:library:2.4.0'
    implementation 'com.daimajia.slider:library:1.1.5@aar'
    implementation 'com.github.eggheadgames:Siren:1.5.0'
    implementation 'me.leolin:ShortcutBadger:1.1.18@aar'
    implementation 'me.everything:overscroll-decor-android:1.0.4'
    implementation 'com.baoyz.pullrefreshlayout:library:1.2.0'
    implementation 'com.nineoldandroids:library:2.4.0'
    implementation 'com.daimajia.slider:library:1.1.5@aar'
    //implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.github.esafirm.android-image-picker:imagepicker:1.8.0'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    implementation 'com.google.android.gms:play-services-places:12.0.0'
    implementation 'com.google.android.gms:play-services-gcm:12.0.0'
    implementation 'com.github.mukeshsolanki:country-picker-android:1.1.9'
    implementation 'com.github.rey5137:material:1.2.4' …
Run Code Online (Sandbox Code Playgroud)

android android-multidex

20
推荐指数
3
解决办法
5180
查看次数

应用程序在启动时由android.content.Context.getString中的NPE导致崩溃

我们有一个非常奇怪的崩溃,它指向系统类.它出现在应用程序启动时.

致命异常:java.lang.RuntimeException:无法启动活动ComponentInfo {com.myapp.android/com.myapp.android.main.BaseMainActivity}:java.lang.RuntimeException:无法创建应用程序com.myapp.android.main. MyApp的:在显示java.lang.NullPointerException android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)在android.app.ActivityThread.access $ 800(ActivityThread.java :151)在Android.app.Loper.loop(Looper.java:193)的android.app.Handler.dispatchMessage(Handler.java:110)上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1342)在android.app.ActivityThread.main(ActivityThread.java:5333)的java.lang.reflect.Method.invokeNative(Method.java),位于com的java.lang.reflect.Method.invoke(Method.java:515). android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:828)位于dalvik.system.NativeStart.mai的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)n(NativeStart.java)由java.lang.RuntimeException引起:无法在android.app.LoadedApk.makeApplication(LoadedApk.java:529)上创建应用程序com.myapp.android.main.MyApp:java.lang.NullPointerException .app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429)在android.app.ActivityThread.access $ 800(ActivityThread.java:151)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1342)位于android.app.AtoT.Thread.main的android.os.Handler.dispatchMessage(Handler.java:110)android.os.Looper.loop(Looper.java:193) ActivityThread.java:5333)at java.lang.reflect.Method.invokeNative(Method.java)at java.lang.reflect.Method.invoke(Method.java:515)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller位于dalvik.system.NativeStart.main(NativeStart.java)的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)中的.run(ZygoteInit.java:828)由java.lang.NullPointerEx引起 知识在android.content.Context.getString(Context.java:343)的com.myapp.android.api.singletons.AppTrackingInstance.initAdjust(AppTrackingInstance.java:114)com.myapp.android.api.singletons.AppTrackingInstance. (AppTrackingInstance.java:92)在com.myapp.android.injection.modules.ApplicationScopeModule.provideAppTrackingInstance(ApplicationScopeModule.java:326)在com.myapp.android.injection.modules.ApplicationScopeModule $$ ModuleAdapter $ ProvideAppTrackingInstanceProvidesAdapter.get(ApplicationScopeModule $ $ ModuleAdapter.java:1618)在com.myapp.android.injection.modules.ApplicationScopeModule $$ ModuleAdapter $ ProvideAppTrackingInstanceProvidesAdapter.get(ApplicationScopeModule $$ ModuleAdapter.java:1552)在dagger.internal.Linker $ SingletonBinding.get(Linker.java :364)com.myapp.android.main.MyApp $$ InjectAdapter.injectMembers(MyApp $$ InjectAdapter.java:70)at com.myapp.android.main.MyApp $$ InjectAdapter.injectMembers(MyApp $$ InjectAdapter.java :23)在dagger.ObjectGraph $ DaggerObjectGraph.in ject(ObjectGraph.java:281)位于com.myapp.android.main.MyApp $ 1.run(MyApp.java:57),位于android的com.myapp.android.main.MyApp.onCreate(MyApp.java:51). app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)在android.app.LoadedApk.makeApplication(LoadedApk.java:526)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)在android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2429)在Android.app.Handler.dispatchMessage(Handler)上的android.app.ActivityThread.access $ 800(ActivityThread.java:151)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1342) .java:110)在android.os.Looper.loop(Looper.java:193)的android.app.ActivityThread.main(ActivityThread.java:5333)at java.lang.reflect.Method.invokeNative(Method.java)在java.lang.reflect.Method.invoke(Method.java:515)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:828)在com.android.internal.os.ZygoteInit.main (ZygoteInit.java:644)在dalvik.syste m.NativeStart.main(NativeStart.java)

我们使用Dagger 1,我们的应用程序是multidex-ed.

匕首模块:

@Module(
  library = true, …
Run Code Online (Sandbox Code Playgroud)

crash android dagger android-multidex

19
推荐指数
1
解决办法
1155
查看次数

DexIndexOverflowException:无法将新索引65772合并为非巨型指令!:Jumbo Mode?和/或Multi-Dex?幕后的是什么?

我试图在gradle中为我的项目设置jumboMode,它似乎能够解决以下DexIndexOverflowException:

com.android.dex.DexException:无法将新索引65536合并为非巨型指令!

DexIndexOverflowException:无法将新索引65772合并为非jumbo指令!

1)什么是jumboMode选项实际上在幕后做了什么?

android {
    ...
    dexOptions {
        jumboMode true
    }

}
Run Code Online (Sandbox Code Playgroud)

2)我也注意到启用multi-dex也可以解决同样的问题,这两种方法之间的正确选择是什么?

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
}
Run Code Online (Sandbox Code Playgroud)

android mode dex android-multidex

18
推荐指数
1
解决办法
1万
查看次数

没有使用Multidex的Android Espresso会显示"未找到测试"

我的Espresso测试一直在运行,直到我不得不支持multidex.

我的build.gradle,我有

minSdkVersion 14
targetSdkVersion 23
multiDexEnabled = true

testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"


androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'

dexOptions {
        jumboMode true
        javaMaxHeapSize "4g"
        incremental true
    }
Run Code Online (Sandbox Code Playgroud)

Test1AuthenticationEspressoTest

@RunWith(AndroidJUnit4.class)
@SmallTest
public class Test1AuthenticationEspressoTest {
    @Rule
    public ActivityTestRule<WelcomeActivity> mActivityRule = new  ActivityTestRule(WelcomeActivity.class);

}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

junit.framework.AssertionFailedError:在com.livestrong.tracker.test.Test1AuthenticationEspressoTest中找不到测试

任何帮助将不胜感激.有人使用浓缩咖啡吗?

android android-espresso android-multidex

18
推荐指数
1
解决办法
4318
查看次数

Android在首次启动时需要更多时间启动应用程序

在我的项目中,我使用了需要multidex支持的库.根据我的研究,我发现它会导致应用启动时出现延迟.

我在gradle中启用了multidex功能.defaultConfig {multiDexEnabled true}

我曾经为kitkat设备获取NoClassDefFound Exception,所以我添加了以下内容:

我在清单中添加了应用程序名称为android:name ="android.support.multidex.MultiDexApplication"

并使用MultiDexApplication扩展了我的应用程序类.

我知道上面的任何一个都足够但我刚刚写了两个.

我尝试了不同的方法来优化启动的持续时间,如下所示:

1.added productFlavors {dev {minSdkVersion 21} prod {minSdkVersion 14}}

  1. dexOptions {preDexLibraries false javaMaxHeapSize"4g"}

  2. 我只导入了必需的谷歌播放服务的库,而不是导入完整的库.

你能否建议我一种即兴创作的方法,因为它实际上需要超过10秒,有时甚至超过某些设备?

或者是否有任何其他原因导致延迟与multidex相比?

提前致谢.

我添加了build.gradle文件内容:

 apply plugin: 'com.android.application'
 apply plugin: 'com.google.gms.google-services'

 android {
  compileSdkVersion 23
  buildToolsVersion "23.0.3"
  useLibrary 'org.apache.http.legacy'

 defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 17
    targetSdkVersion 23
    versionCode 3
    versionName "1.2"
    multiDexEnabled true
}

dexOptions {
    incremental true
    javaMaxHeapSize "10g"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

  dependencies {
    compile fileTree(include: …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-5.0-lollipop android-multidex

18
推荐指数
1
解决办法
1万
查看次数

为什么使用multiDexEnabled(true)允许应用程序构建但不断崩溃?

我正在处理的应用程序(基本代码不是由我编写的,包含许多无法删除的大型库).在最近的一次运行中,它开始响应消息:

这仅在应用程序尝试使用运行箭头时构建时发生,它在调用"rebuild"或"clean"时成功构建.

包含在线的解决方案是使用multiDexEnabled true(此处为multiDex文档.)

使用这个我能够使用"运行"箭头和"重建"获得建筑物.但是,构建并在手机上运行的应用程序崩溃时出现以下错误消息:

12-11 16:17:16.963 28868-28868/? D/dalvikvm: Late-enabling CheckJNI
12-11 16:17:17.023 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10471 (common_google_play_services_updating_text) in Lcom/google/android/gms/R$string;
12-11 16:17:17.023 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0021
12-11 16:17:17.023 28868-28868/com.myname.myappcoop I/dalvikvm: DexOpt: unable to optimize static field ref 0x28e8 at 0x2e in Lcom/google/android/gms/common/GoogleApiAvailability;.zza
12-11 16:17:17.033 28868-28868/com.myname.myappcoop W/dalvikvm: VFY: unable to resolve static field 10465 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string;
12-11 16:17:17.033 28868-28868/com.myname.myappcoop D/dalvikvm: VFY: replacing opcode 0x60 at 0x0012
12-11 16:17:17.033 28868-28868/com.myname.myappcoop …
Run Code Online (Sandbox Code Playgroud)

git android android-gradle-plugin android-multidex

17
推荐指数
1
解决办法
4858
查看次数

我可以在Android调试版本中启用multidex吗?

亲爱的,我在很多博客文章中都看到,multidex apps启动比普通应用慢.我的应用程序使用了很多超过64k方法的库,所以我使用multidex.但是当我在发布版本中使用proguard时,最终的apk变得不到64k方法

所以我的问题是:我是否可以在Android调试版本中启用multidex,这样我就没有运行时错误?并在发布版本中禁用multi dex,因为我不需要它?

如果有,怎么样?

如果不是,Android是否足够智能以加速启动,因为它应该认识到应用程序不超过64k,即使它是多dex应用程序?

performance android android-multidex

17
推荐指数
2
解决办法
4877
查看次数

使用Multidex对应用程序性能,稳定性,兼容性的影响......?

我的应用程序的下一个版本大约有70K方法.

了解使用Multidex的确切含义(通常意味着使用Multidex支持库来支持API <21)对我做出这个决定非常重要:

我应该付出很多努力(例如通过微调我的Proguard配置以更积极地缩小,倾倒一些第三方库等)以符合64K方法限制,或者我应该只启用Multidex?

文件表明,Multidex支持库可能有一些严重的副作用(见Limitations of the multidex support library).

我真的应该期待什么?

  • 某些设备上的安装失败?
  • 应用程序启动缓慢(第一次启动或始终)?
  • 某些设备上出现新的崩溃或ANR?
  • 整体性能下降?

我们将非常感谢您自己迁移到Multidex的反馈.

android android-multidex

17
推荐指数
2
解决办法
3760
查看次数

多个dex文件定义了Landroid/support/design/widget/CoordinatorLayout $ LayoutParams

我在我的项目中得到多个dex文件定义错误.

我在使用这两种标签的build.gradle以及

dexOptions {
    preDexLibraries = false
}
defaultConfig {
    multiDexEnabled true

}
Run Code Online (Sandbox Code Playgroud)

但仍然得到这个错误.

   Information:Gradle tasks [:app:assembleDebug]
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$LayoutParams;
Error:com.android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$LayoutParams;
Error:  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error:  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error:  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error:  at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: …
Run Code Online (Sandbox Code Playgroud)

android build.gradle android-multidex

17
推荐指数
1
解决办法
1万
查看次数

Multidex安装失败

我正在使用CircledImageView库.它适用于棒棒糖+ Android版本.但在kitkat它崩溃了.所以在谷歌搜索后.我发现我必须在我的应用程序中实现multidex.

这是我的应用程序类.

public class FireApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Firebase.setAndroidContext(this);
        Fresco.initialize (this);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

在defaultconfig下的build.gradle中,MultiDexEnabled为true

multiDexEnabled true
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,我收到以下错误.

java.lang.NoSuchFieldException: Field dexElementsSuppressedExceptions not found in class dalvik.system.PathClassLoader
 at android.support.multidex.MultiDex.findField(MultiDex.java:288)
 at android.support.multidex.MultiDex.access$300(MultiDex.java:57)
 at android.support.multidex.MultiDex$V19.install(MultiDex.java:390)
 at android.support.multidex.MultiDex$V19.access$000(MultiDex.java:369)
 at android.support.multidex.MultiDex.installSecondaryDexes(MultiDex.java:242)
 at android.support.multidex.MultiDex.install(MultiDex.java:161)
 at android.support.multidex.MultiDexApplication.attachBaseContext(MultiDexApplication.java:39)
 at com.buckydroid.anonchat.FireApp.attachBaseContext(Unknown Source)
 at android.app.Application.attach(Application.java:182)
 at android.app.Instrumentation.newApplication(Instrumentation.java:991)
 at android.app.Instrumentation.newApplication(Instrumentation.java:975)
 at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4564)
 at android.app.ActivityThread.access$1500(ActivityThread.java:139)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:149)
 at android.app.ActivityThread.main(ActivityThread.java:5268)
 at java.lang.reflect.Method.invokeNative(Native …
Run Code Online (Sandbox Code Playgroud)

java android android-multidex

16
推荐指数
1
解决办法
3745
查看次数