Comments (12)
我搜了一下Sample的代码中确实引用了27.0.2
和27.1.1
两个版本的support包,所以报这个错误应该是可以理解的。
但是你是怎么复现的呢?我最好复现一下,再改正这个问题。
from shadow.
你如果把
projects/sample/sample-plugin/third-party/slidingmenu/build.gradle
中的27.0.2
改成27.1.1
还能复现问题吗?
from shadow.
你如果把
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的时候就报错了。
然后在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.
去掉sample-plugin-app的build.gradle添加的就可以安装了:
apply from: "../sample-sheep-app/build.gradle"
但还是打不开新加的插件,我再尝试尝试吧。
ps:插件apk已安装的情况下可以打开,未安装打不开。
from shadow.
如果只是sample代码,最好直接提交到你fork的库上,我就可以编译看看了。
from shadow.
如果只是sample代码,最好直接提交到你fork的库上,我就可以编译看看了。
提交了,git:9e5f1973a067810a8ca590f29b9fe68f0b535696
from shadow.
这回看明白你哪里搞错了。
sample-plugin-app
的build.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.
尝试按照你说的去修改了,并添加了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.
怎么关了。。。
给你改好了。
git fetch https://github.com/shifujun/Shadow.git f294415c
git merge FETCH_HEAD
这样把我的代码改动合到你本地看看吧。
你主要是对Android构建不太熟悉。具体改动原因我都写Commit Message里了。另外也不是说插件apk模块非得拆出来一个aar模块,只是拆出来方便同时再构建一个可以正常安装的app。但是你不能不拆这个模块,同时搞一个空的apk模块。
from shadow.
看你好像又改动了。就别merge了。
git fetch https://github.com/shifujun/Shadow.git f294415c
git checkout -b \#29 FETCH_HEAD
这样直接看我的分支的。
from shadow.
好的,我看下,感谢~:kissing_heart:
from shadow.
看你好像又改动了。就别merge了。
git fetch https://github.com/shifujun/Shadow.git f294415c git checkout -b \#29 FETCH_HEAD
这样直接看我的分支的。
可以了,构建这一块,我再去熟悉下。感谢大牛~
from shadow.
Related Issues (20)
- 启动插件时,会报上下文NullPointerException HOT 2
- 报错,找不到DelegateProvider
- 宿主更新插件,要重启宿主后插件才生效 HOT 1
- 怎么加载本地存储中的插件,而不是加载assets中的插件 HOT 1
- UnsatisfiedLinkError,so文件映射失败
- 关于插件和宿主通信的问题
- android 4.4.2 MultiDex 每次运行都要删除旧的dex
- 可以更新一下最新代码的maven版本吗? HOT 1
- 自荐 BlackShadow,Shadow的二次封装项目,开袋即食版。
- 插件集成 nfc 功能问题 HOT 3
- throw new RuntimeException("packageArchiveInfo is NullPointException") HOT 2
- 如何通过反射调用插件中的方法并获取返回值 HOT 2
- ShadowNativeActivityDelegate.getPackageManager getMPluginActivity NullPointerException HOT 1
- NativiActivity java.lang.RuntimeException: java.lang.IllegalArgumentException: Unable to find native library main using classloade
- 宿主和插件之间的资源共享 HOT 4
- 存在转换后被调用方法未实现的问题 getOnBackInvokedDispatcher HOT 2
- gradle8适配 HOT 6
- com.tencent.shadow.plugin 这个插件最大支持的 AGP 和 Gradle 版本分别是多少?还有 compileSdk 版本? HOT 10
- 插件中使用 WorkManager 时启动插件出错 HOT 1
- 线上偶现Rejecting re-init on previously-failed class xxx,NoClassDefFoundError Class not found using the boot class loader; no stack trace available HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shadow.