HBuilder版本升级问题引发的血案

作者: 瑟闻风倾 | 来源:发表于2020-03-27 09:48 被阅读0次

    (1) HBuilderX2.0.1.20190614升级到HBuilderX2.2.2.20190816

    • 问题:原生扫码插件扫码黑屏无法使用
    • 原因:原生扫码插件源代码未对只有一个前置摄像头的情况进行合适的处理
    • 解决:修改插件源码

    HBuilderX2.2.2.20190816—>HBuilderX2.3.6.20191020—>HBuilderX2.3.7.20191024,升级程序无问题

    (2) HBuilderX2.3.7.20191024升级到HBuilderX2.4.2.20191115

    • 问题:真机运行无法成功编译,云打包也出错


      真机运行无法成功编译.png
    • 原因:未知
    • 解决:暂时从HBuilderX2.4.2.20191115回退到 HBuilderX2.3.7.20191024

    (3) 2.3.7.20191024版本年前云打包正常,年后云打包报错

    • 打包警告提醒


      打包警告提醒.png

    警告:当前编译器版本HBuilderX2.3.7(HBuilderX版本即编译器版本)与云服务器端的编译器版本2.5.1不一致,可能导致兼容性问题。

    • 忽略警告后继续进行云打包时报错信息如下
    Appid: __UNI__E1651CC 
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':transformClassesWithMultidexlistForRelease'.
    > com.android.build.api.transform.TransformException: Error while generating the main dex list.
    
    * Try:
    Run with --debug option to get more log output. Run with --scan to get full insights.
    
    * Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':transformClassesWithMultidexlistForRelease'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
    at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
    at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: Error while generating the main dex list.
    at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
    ... 31 more
    Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
    at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:144)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
    ... 44 more
    Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: com.alibaba.android.bindingx.core.BindingXCore$JavaScriptCallback
    at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
    at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:131)
    ... 47 more
    Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: com.alibaba.android.bindingx.core.BindingXCore$JavaScriptCallback
    at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64)
    at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25)
    at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24)
    at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:124)
    at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:123)
    at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86)
    at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:40)
    at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:110)
    at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)
    ... 48 more* Get more help at https://help.gradle.org
    
    BUILD FAILED in 20s
    

    开始根据警告信息以为是当前编译器版本(HBuilderX版本即编译器版本)与云服务器端的编译器版本不一致导致打包失败,所以 将HBuilderX2.3.7.20191024(编译器版本:2.3.7)升级到了最新的HBuilderX2.6.1.20200226(编译器版本:2.6.1),但是云打包仍报错;根据警告信息表明云服务器端的编译器版本为2.5.1,所以又降级到HBuilderX2.5.1.20190103(编译器版本:2.5.1),但是云打包仍报错。

    • 分析:云打包报错信息
      Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: com.alibaba.android.bindingx.core.BindingXCore$JavaScriptCallback
    • 可能原因:使用的原生插件(Android第三方aar文件)与和uni-app原生打包环境(云端打包环境)冲突。
    • 解决:注释依赖库bindingx-corebindingx_weex_plugin,即

    原生插件的builde.gradle文件中注释掉依赖库bindingx-corebindingx_weex_plugin,并重新生成aar包

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 28
        buildToolsVersion "28.0.3"
    
    
        defaultConfig {
            minSdkVersion 19
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    
    //    消除警告并定位到警告位置:使用或覆盖了已过时的 API,有关详细信息, 请使用 -Xlint:deprecation 重新编译。
        allprojects {
            gradle.projectsEvaluated {
                tasks.withType(JavaCompile){
                    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
                }
            }
        }
    
    }
    
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    
    dependencies {
        compileOnly fileTree(dir: 'libs', include: ['*.jar'])
        compileOnly fileTree(dir: '../app/libs', include: ['dc_weexsdk-release.aar', 'uniapp-release.aar'])
    
    //    testImplementation 'junit:junit:4.12'
    //    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    //    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    
        implementation "com.android.support:recyclerview-v7:27.0.0"
        implementation 'com.android.support:support-v4:27.0.0'
        implementation 'com.android.support:appcompat-v7:27.0.0'
    
    //    implementation 'com.alibaba.android:bindingx-core:1.0.3'
    //    implementation 'com.alibaba.android:bindingx_weex_plugin:1.0.3'
        implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
    
        implementation 'com.alibaba:fastjson:1.1.46'
    
    }
    
    

    替换uniapp项目中原生插件的aar包,并在package.json文件中注释掉依赖库bindingx-corebindingx_weex_plugin

    {
        "name": "MyScanCode",
        "id": "My-ScanCode",
        "version": "0.0.1",
        "description": "扫码",
        "_dp_type":"nativeplugin",
        "_dp_nativeplugin":{
            "android": {
                "plugins": [
                    {
                        "type": "module",
                        "name": "My-ScanCode",
                        "class": "com.osmium.myscancode.ScanCodeWXModule"
                    }
                ],
                "integrateType": "aar",
                "minSdkVersion" : 16,
                "dependencies": [
                    // "com.alibaba.android:bindingx-core:1.0.3",
                    // "com.alibaba.android:bindingx_weex_plugin:1.0.3",
                    "com.journeyapps:zxing-android-embedded:3.6.0"
                ]
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:HBuilder版本升级问题引发的血案

        本文链接:https://www.haomeiwen.com/subject/fjrbictx.html