Coder Social home page Coder Social logo

DexArchiveMergerException about shadow HOT 12 CLOSED

tencent avatar tencent commented on May 22, 2024
DexArchiveMergerException

from shadow.

Comments (12)

shifujun avatar shifujun commented on May 22, 2024

我搜了一下Sample的代码中确实引用了27.0.227.1.1两个版本的support包,所以报这个错误应该是可以理解的。

但是你是怎么复现的呢?我最好复现一下,再改正这个问题。

from shadow.

shifujun avatar shifujun commented on May 22, 2024

你如果把
projects/sample/sample-plugin/third-party/slidingmenu/build.gradle
中的27.0.2改成27.1.1还能复现问题吗?

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

你如果把
projects/sample/sample-plugin/third-party/slidingmenu/build.gradle
中的27.0.2改成27.1.1还能复现问题吗?
把slidingmenu/build.gradle中的27.0.2改成27.1.1还是会出现这个问题。

不确定是不是我加的sample问题,可能我的接入姿势不够标准= =。。

我这边是想引入一个sample测试,然后编译没问题,Run sample-host的时候就报错了。

导入的位置如下图:
preview

然后在setting.gradle的includeSample()添加了配置:

include 'sample-sheep-app'
project(':sample-sheep-app').projectDir = file('projects/sample/sample-plugin/sample-sheep-app')

还有在sample-plugin-app的build.gradle中添加:

apply from: "../sample-sheep-app/build.gradle"

这个sample的依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'android.arch.lifecycle:extensions:1.1.1'
    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'
}

完成以上步骤,Run sample-sheep-app的时候就报错了

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

去掉sample-plugin-app的build.gradle添加的就可以安装了:

apply from: "../sample-sheep-app/build.gradle"

但还是打不开新加的插件,我再尝试尝试吧。
ps:插件apk已安装的情况下可以打开,未安装打不开。

from shadow.

shifujun avatar shifujun commented on May 22, 2024

如果只是sample代码,最好直接提交到你fork的库上,我就可以编译看看了。

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

如果只是sample代码,最好直接提交到你fork的库上,我就可以编译看看了。

提交了,git:9e5f1973a067810a8ca590f29b9fe68f0b535696

from shadow.

shifujun avatar shifujun commented on May 22, 2024

这回看明白你哪里搞错了。

sample-plugin-appbuild.gradle中写的apply from: "../sample-normal-app/build.gradle",它的意思是把sample-normal-app配置的内容先抄一遍。然后后面又把applicationId改了,再应用的Shadow插件。这样做才是让sample-plugin-app成为一个和sample-normal-app构建配置一样,但是多了编译成Shadow插件的模块。

你新建的sample-sheep-app只是一个相当于sample-normal-app的普通app。你可以把sample-plugin-app中Shadow相关的配置抄过去,也可以类似的再建一个sample-sheep-plugin-app模块。

你在sample-plugin-app中添加apply from: "../sample-sheep-app/build.gradle",就相当于把你的sample-sheep-app配置又一次复制到了sample-plugin-app中,那出现重复类也不奇怪了啊。

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

尝试按照你说的去修改了,并添加了sheep-plugin模块。
执行了packageAllPlugin打包所有插件,然后push到/data/local/tmp,打开宿主,还是打不开sheep-plugin的MainActivity。
报了下面这个错误:

2019-07-04 13:41:05.703 13114-13151/com.tencent.shadow.sample.host E/com.tencent.shadow.dynamic.manager.PluginManagerThatUseDynamicLoader: getPlugin exception:
    java.lang.NullPointerException: Attempt to read from field 'java.io.File com.tencent.shadow.core.manager.installplugin.InstalledPlugin$Part.pluginFile' on a null object reference
        at com.tencent.shadow.dynamic.manager.PluginManagerThatUseDynamicLoader.getPlugin(PluginManagerThatUseDynamicLoader.java:274)
        at com.tencent.shadow.dynamic.manager.UuidManagerBinder.onTransact(UuidManagerBinder.java:50)
        at android.os.Binder.execTransact(Binder.java:731)
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:1127)
        at com.tencent.shadow.dynamic.manager.BinderPluginLoader.loadPlugin(BinderPluginLoader.java:46)
        at com.tencent.shadow.sample.manager.FastPluginManager.loadPlugin(FastPluginManager.java:141)
        at com.tencent.shadow.sample.manager.FastPluginManager.convertActivityIntent(FastPluginManager.java:119)
        at com.tencent.shadow.sample.manager.FastPluginManager.startPluginActivity(FastPluginManager.java:111)
        at com.tencent.shadow.sample.manager.SamplePluginManager$1.run(SamplePluginManager.java:109)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
2019-07-04 13:41:05.705 13159-13172/com.tencent.shadow.sample.host:plugin E/JavaBinder: *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
    com.tencent.shadow.dynamic.host.FailedException
        at com.tencent.shadow.dynamic.host.BinderUuidManager.checkException(BinderUuidManager.java:36)
        at com.tencent.shadow.dynamic.host.BinderUuidManager.getPlugin(BinderUuidManager.java:54)
        at com.tencent.shadow.dynamic.loader.impl.DynamicPluginLoader.loadPlugin(DynamicPluginLoader.kt:80)
        at com.tencent.shadow.dynamic.loader.impl.PluginLoaderBinder.onTransact(PluginLoaderBinder.kt:42)
        at android.os.Binder.execTransact(Binder.java:731)
2019-07-04 13:41:05.709 13114-13151/com.tencent.shadow.sample.host E/AndroidRuntime: JUNK_FATAL_EXCEP: FATAL EXCEPTION: pool-3-thread-1,Process: com.tencent.shadow.sample.host, PID: 13114
2019-07-04 13:41:05.710 13114-13151/com.tencent.shadow.sample.host E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
    Process: com.tencent.shadow.sample.host, PID: 13114
    java.lang.RuntimeException: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.tencent.shadow.sample.host/com.sheepyang1993.shadowhostdemo.MainActivity}; have you declared this activity in your AndroidManifest.xml?
        at com.tencent.shadow.sample.manager.SamplePluginManager$1.run(SamplePluginManager.java:111)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.tencent.shadow.sample.host/com.sheepyang1993.shadowhostdemo.MainActivity}; have you declared this activity in your AndroidManifest.xml?
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2015)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1678)
        at android.app.Activity.startActivityForResult(Activity.java:4617)
        at android.app.Activity.startActivityForResult(Activity.java:4575)
        at android.app.Activity.startActivity(Activity.java:4939)
        at android.app.Activity.startActivity(Activity.java:4904)
        at com.tencent.shadow.sample.manager.FastPluginManager.startPluginActivity(FastPluginManager.java:115)
        at com.tencent.shadow.sample.manager.SamplePluginManager$1.run(SamplePluginManager.java:109)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 

from shadow.

shifujun avatar shifujun commented on May 22, 2024

怎么关了。。。

给你改好了。

git fetch https://github.com/shifujun/Shadow.git f294415c
git merge FETCH_HEAD

这样把我的代码改动合到你本地看看吧。

你主要是对Android构建不太熟悉。具体改动原因我都写Commit Message里了。另外也不是说插件apk模块非得拆出来一个aar模块,只是拆出来方便同时再构建一个可以正常安装的app。但是你不能不拆这个模块,同时搞一个空的apk模块。

from shadow.

shifujun avatar shifujun commented on May 22, 2024

看你好像又改动了。就别merge了。

git fetch https://github.com/shifujun/Shadow.git f294415c
git checkout -b \#29 FETCH_HEAD

这样直接看我的分支的。

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

好的,我看下,感谢~:kissing_heart:

from shadow.

SheepYang1993 avatar SheepYang1993 commented on May 22, 2024

看你好像又改动了。就别merge了。

git fetch https://github.com/shifujun/Shadow.git f294415c
git checkout -b \#29 FETCH_HEAD

这样直接看我的分支的。

可以了,构建这一块,我再去熟悉下。感谢大牛~

from shadow.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.