Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android项目冲突。 #22

Open
hahaYJ opened this issue Apr 18, 2019 · 29 comments
Open

Android项目冲突。 #22

hahaYJ opened this issue Apr 18, 2019 · 29 comments

Comments

@hahaYJ
Copy link

hahaYJ commented Apr 18, 2019

接入改SDK后,编译出现如下报错,请问怎么解决处理呢?
AGPBI: {"kind":"error","text":"2 errors; aborting","sources":[{}]}
:app:transformClassesWithDexForOPPODebug FAILED
FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformClassesWithDexForOPPODebug'.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process

@rik296
Copy link

rik296 commented Apr 18, 2019

Hi, 這個需要您再附上更完整的 logcat,讓我們可以更精確地分析問題,謝謝!

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForOPPODebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
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.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process
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:212)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
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:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
... 32 more
Caused by: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process
at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:222)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 48 more
Caused by: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process
at com.android.builder.core.DexByteCodeConverter.dexInProcess(DexByteCodeConverter.java:176)
at com.android.builder.core.DexByteCodeConverter.runDexer(DexByteCodeConverter.java:147)
at com.android.builder.core.DexByteCodeConverter.convertByteCode(DexByteCodeConverter.java:132)
at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:213)
... 51 more
Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Return code 1 for dex process
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at com.android.builder.core.DexByteCodeConverter.dexInProcess(DexByteCodeConverter.java:174)
... 54 more
Caused by: com.android.ide.common.process.ProcessException: Return code 1 for dex process
at com.android.builder.internal.compiler.DexWrapper$DexProcessResult.assertNormalExitValue(DexWrapper.java:117)
at com.android.builder.core.DexByteCodeConverter.lambda$dexInProcess$0(DexByteCodeConverter.java:169)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
... 1 more

@rik296
Copy link

rik296 commented Apr 19, 2019

Hi, 請問您是在編譯階段有錯誤還是在執行 app 階段有 exception 呢?
因為在這份 logcat 中沒有看到 SDK 相關的錯誤,
若是在編譯 (Build) 階段有錯誤,請擷取 Build 視窗相關的訊息,以利我們釐清問題
紅色方框處:
螢幕快照 2019-04-19 10 18 12

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

image

@rik296
Copy link

rik296 commented Apr 19, 2019

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

请问,你们打包生成aar的时候,就把什么通用的第三方库一起打包吗?如果有使用请问都是哪一些库?

@rik296
Copy link

rik296 commented Apr 19, 2019

螢幕快照 2019-04-19 11 27 47

這幾個是我們有用到的第三方 library

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

我们的项目也使用了gson,不确定是不是这个冲突,请问是否方便,打包的时候使用 :compileOnly 指令引用gson。然后重新打一个aar让我们试试呢?谢谢

@rik296
Copy link

rik296 commented Apr 19, 2019

Hi, 因為我們的 aar 需要先經過內部的測試驗證才能釋出,需要安排時程跟花費一些時間,這部分看看您能不能先從其他的設定解決看看 😀

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

我们的工程都有做dex分包(multiDexEnabled true),应该不是这块的问题,但是我看你们的aar代码没看到gson相关的包名被打包,不懂是不是被混淆了。现在不能定位具体是哪一块冲突。关键还是解决冲突这个才是根本。

@rik296
Copy link

rik296 commented Apr 19, 2019

Hi, 這是我們的 build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        externalNativeBuild {
            cmake {
                cppFlags "-fvisibility=hidden -frtti -fexceptions -ldl -lz"
                abiFilters "armeabi-v7a"
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFiles 'proguard-rules.pro'  // [Jethro 20180725] Explicitly define rules, rather than using ones comes with environment's default, which are actually not managed.
        }
        debug {
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

    lintOptions {
        abortOnError false
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation files('libs/HL-AndroidLib.jar')
    implementation files('libs/HL-DataDecoderLib.jar')
    implementation files('libs/snakeyaml-1.10-android.jar')
    implementation files('libs/gson-2.2.4.jar')
    implementation files('libs/nrf-logger-v1.1.jar')

    implementation 'com.android.support:appcompat-v7:26.1.0'
    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'
}

// task to delete the old jar
task deleteOldJar(type:Delete) {
    delete 'release/GoFIT_SDK-release.aar'
}

// task to export contents as jar
task exportJar(type:Copy) {
    from('build/outputs/aar')
    into('release/')
    include('sdk-release.aar')
    rename('sdk-release.aar', 'GoFIT_SDK-release.aar')
}

exportJar.dependsOn(deleteOldJar, build)

您是指

implementation files('libs/gson-2.2.4.jar')

這邊要改成這樣嗎?

compileOnly files('libs/gson-2.2.4.jar')

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

对,试试看,是不是这个的冲突

@hahaYJ
Copy link
Author

hahaYJ commented Apr 19, 2019

好的 谢谢

@hahaYJ
Copy link
Author

hahaYJ commented Apr 23, 2019

你好,之前不能编译的问题,我删除build文件夹后,就能debug编译通过,但是今天测试了一下build APK,果然不行。冲突位置已经找到:
10_26_18__04_23_2019
混淆后和我们某个混淆的包重名了?我们工程本身不混淆,估计也是和我们工程里面某个第三方的包冲突了,是否可以不混淆这个类让我试试呢?

@rik296
Copy link

rik296 commented Apr 23, 2019

不好意思,這部分的話,沒有經過 proguard 的檔案我這邊是沒有權限產出的,您可以試試一些 force, exclude 的方式,看能不能解決 library 衝突的 issue
http://www.paincker.com/gradle-dependencies

@hahaYJ
Copy link
Author

hahaYJ commented Apr 23, 2019

好的,我试试

@hahaYJ
Copy link
Author

hahaYJ commented Apr 23, 2019

18_29_49__04_23_2019
我要怎么写这个规则啊。😢怎么才能只忽略这个文件,而且就算忽略了,会不会影响到你们的代码啊。😢

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

怎么处理呢,兄弟?给个方案啊。代码都是混淆的,我们更不懂是什么库了。

@rik296
Copy link

rik296 commented Apr 24, 2019

還是您的專案有 github 連結,我在我本地端弄弄看是什麼問題?

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

我们的项目肯定不能源公开的。你能不能先看看那个com.a.a.a.a.class是什么类,哪个库的

@rik296
Copy link

rik296 commented Apr 24, 2019

因為經過 proguard,我們這邊也看不出來 com.a.a.a.a.class 是哪個檔案了

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

10_14_28__04_24_2019
可不可以不混淆,然后看一下,因为这个类代码简单,辨识度应该还是很高的

@rik296
Copy link

rik296 commented Apr 24, 2019

基本上有經過混淆的代碼都會被化簡...
我們的專案裡是沒有這麼少代碼的檔案

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

这样吧,你把你们应用的第三方jar,邮件发我。我看看那些包的源码。可以吗?

@rik296
Copy link

rik296 commented Apr 24, 2019

我們用的是這幾個,前面 comment 也有附上了
螢幕快照 2019-04-24 10 33 41

除了 HL-AndroidLib.jar 與 HL-DataDecoderLib.jar 是我們合作廠商的 library,不能提供,
其他幾個都是 open source,您可以在 github 搜尋到源代碼

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

经检查,如下图:
11_28_58__04_24_2019
可以肯定那个包如果不是你们的代码,那就是 HL-AndroidLib.jar 和 HL-DataDecoderLib.jar 里面的了。能不能与提供方沟通解决这个问题?如果你们不处理,我们暂时没有什么解决方案了。

@rik296
Copy link

rik296 commented Apr 24, 2019

Hi, 那個 class 的包名可能是 com.fromtw.android.tools
class name 是 ByteUtils
不知這些訊息是否有幫助呢?

@hahaYJ
Copy link
Author

hahaYJ commented Apr 24, 2019

没实际作用,jar是直接打包的,不是通过仓库依赖传递的,肯定是和com.a.a.a.a.class重名了,终究到底是要改包名重新打包,否则还是解决不了冲突。

@rik296
Copy link

rik296 commented May 7, 2019

Hi, 因為我們與 HL-AndroidLib.jar 的提供廠商已結束合作,對方表示若要修改 library 需重新談定合約,這部分需要看您這邊是否有意願與我們進行業務合作,若有意願,您可以聯絡我們的業務窗口洽談商業用途:http://dev.goyourlife.com/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants