manbanggroup / phantom Goto Github PK
View Code? Open in Web Editor NEWPhantom — 唯一零 Hook 稳定占坑类 Android 热更新插件化方案
License: Apache License 2.0
Phantom — 唯一零 Hook 稳定占坑类 Android 热更新插件化方案
License: Apache License 2.0
我com.android.tools.build:gradle:4.1.0一直编译不通过,让我们项目降低gradle到3.1.4也不划算,能不能升级下gradle兼容版本
当activity继承 LifecycleActivity 的时候 activity将无法启动
UploadDriverPermitActivity 继承了LifecycleActivity,导致 UploadDriverPermitActivity 无法启动
具体错误如下:
W/Phantom ( 6513): [ (PluginContext.java:84)# createContext -> main ] createContext error, targetClass: class com.wlqq.phantom.plugin.usercenter.verifiy.UploadDriverPermitActivity
W/Phantom ( 6513): java.lang.ClassCastException: com.wlqq.phantom.plugin.usercenter.verifiy.UploadDriverPermitActivity cannot be cast to com.wlqq.phantom.library.proxy.PluginInterceptActivity
W/Phantom ( 6513): at com.wlqq.phantom.library.proxy.PluginContext.createContext(PluginContext.java:69)
W/Phantom ( 6513): at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:115)
W/Phantom ( 6513): at android.app.Activity.performCreate(Activity.java:5990)
W/Phantom ( 6513): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
W/Phantom ( 6513): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
W/Phantom ( 6513): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
W/Phantom ( 6513): at android.app.ActivityThread.access$800(ActivityThread.java:151)
W/Phantom ( 6513): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
W/Phantom ( 6513): at android.os.Handler.dispatchMessage(Handler.java:102)
W/Phantom ( 6513): at android.os.Looper.loop(Looper.java:135)
W/Phantom ( 6513): at android.app.ActivityThread.main(ActivityThread.java:5254)
W/Phantom ( 6513): at java.lang.reflect.Method.invoke(Native Method)
W/Phantom ( 6513): at java.lang.reflect.Method.invoke(Method.java:372)
W/Phantom ( 6513): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
W/Phantom ( 6513): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
W/Phantom ( 6513): [ (ActivityHostProxy.java:160)# onCreate -> main ] ActivityHostProxy onCreate error: com.wlqq.phantom.plugin.usercenter.verifiy.UploadDriverPermitActivity
W/Phantom ( 6513): java.lang.Exception: create mClientActivity return null
W/Phantom ( 6513): at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:117)
W/Phantom ( 6513): at android.app.Activity.performCreate(Activity.java:5990)
W/Phantom ( 6513): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
W/Phantom ( 6513): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
W/Phantom ( 6513): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
W/Phantom ( 6513): at android.app.ActivityThread.access$800(ActivityThread.java:151)
W/Phantom ( 6513): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
W/Phantom ( 6513): at android.os.Handler.dispatchMessage(Handler.java:102)
W/Phantom ( 6513): at android.os.Looper.loop(Looper.java:135)
W/Phantom ( 6513): at android.app.ActivityThread.main(ActivityThread.java:5254)
W/Phantom ( 6513): at java.lang.reflect.Method.invoke(Native Method)
W/Phantom ( 6513): at java.lang.reflect.Method.invoke(Method.java:372)
W/Phantom ( 6513): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
W/Phantom ( 6513): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
插件里面有个so和项目中的so名字一样,能不能插件使用插件的so,项目使用项目里的so 呢
请问插件是否不支持databinding呢?我这边运行demo 发现 插件的databinding直接爆空了,另外能否提供Phantom目前支持的技术栈清单,鉴于运行demo有时候缺少一些技术栈支持信息,期望使用者也能够少走弯路,十分期待!谢谢!
使用机型 VIVO X20A Android版本7.1.1
插件使用databinding 插件主界面 onCreate(Bundle savedInstanceState) savedInstanceState==null
下面为报错日志
2018-10-25 19:00:38.699 2324-2354/? V/pem: noteActivityV5 uid = 10465, cool = 1, Name = com.wlqq.phantom.library.proxy.ActivityHostProxy 2018-10-25 19:00:38.699 2324-2354/? V/SceneMonitor: noteActivitySwitch: the current uid: 10465 mSceneApp.uid: 10465 2018-10-25 19:00:38.699 2324-2626/? V/SceneMonitor: MSG_ACTIVITY_SWITCH the current app is :com.wlqq.phantom.sample = uid : 10465 2018-10-25 19:00:38.705 23530-23530/com.wlqq.phantom.sample V/Phantom: [ (PhantomCore.java:612)# waitForPluginManagerInitCompletion -> main ] waitForPluginManagerInitCompletion cost ms: 0 2018-10-25 19:00:38.705 23530-23530/com.wlqq.phantom.sample I/Phantom: [ (ActivityHostProxy.java:154)# onCreate -> main ] onCreate, originIntent.getComponent: ComponentInfo{com.wlqq.phantom.plugin.view/com.wlqq.phantom.plugin.view.MainActivity} 2018-10-25 19:00:38.711 23530-23530/com.wlqq.phantom.sample V/Phantom: [ (PhantomCore.java:612)# waitForPluginManagerInitCompletion -> main ] waitForPluginManagerInitCompletion cost ms: 0 2018-10-25 19:00:38.721 23530-23530/com.wlqq.phantom.sample I/DecorView: setWindowBackground mBackgroundPadding = Rect(0, 0 - 0, 0), mFramePadding = Rect(0, 0 - 0, 0), pkg = com.wlqq.phantom.sample 2018-10-25 19:00:38.722 23530-23530/com.wlqq.phantom.sample V/Phantom: [ (DefaultLogReporter.java:29)# reportLog -> main ] com.wlqq.phantom.plugin.view_1.0.0/MainActivity onCreate fail 2018-10-25 19:00:38.723 23530-23530/com.wlqq.phantom.sample W/Phantom: [ (ActivityHostProxy.java:222)# onCreate -> main ] ActivityHostProxy onCreate error: com.wlqq.phantom.plugin.view.MainActivity java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:196) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2698) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2806) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:181) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790) Caused by: java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.wlqq.phantom.plugin.view.databinding.ActivityMainBinding.text' on a null object reference at com.wlqq.phantom.plugin.view.MainActivity.onCreate(MainActivity.java:48) at java.lang.reflect.Method.invoke(Native Method) at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:196) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2698) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2806) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:181) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790) 2018-10-25 19:00:38.723 23530-23530/com.wlqq.phantom.sample V/Phantom: [ (DefaultLogReporter.java:24)# reportEvent -> main ] _ph_3.0.0_activity_onCreate_fail -> com.wlqq.phantom.plugin.view -> params: {SDK_INT=25, target_activity=com.wlqq.phantom.plugin.view.MainActivity, message=java.lang.reflect.InvocationTargetException, vn=1.0.0, MODEL=vivo_vivo X20A_25, package_name=com.wlqq.phantom.plugin.view} 2018-10-25 19:00:38.724 23530-23530/com.wlqq.phantom.sample W/Phantom: [ (DefaultLogReporter.java:19)# reportException -> main ] params: {SDK_INT=25, MODEL=vivo_vivo X20A_25} com.wlqq.phantom.library.proxy.ActivityOnCreateException: ActivityHostProxy onCreate error: com.wlqq.phantom.plugin.view.MainActivity at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:232) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2698) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2806) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:181) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:196) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2698) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2806) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:181) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790) Caused by: java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.wlqq.phantom.plugin.view.databinding.ActivityMainBinding.text' on a null object reference at com.wlqq.phantom.plugin.view.MainActivity.onCreate(MainActivity.java:48) at java.lang.reflect.Method.invoke(Native Method) at com.wlqq.phantom.library.proxy.ActivityHostProxy.onCreate(ActivityHostProxy.java:196) at android.app.Activity.performCreate(Activity.java:6877) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2698) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2806) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:181) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790)
Caused by: groovy.lang.MissingMethodException: No signature of method: com.android.build.gradle.internal.scope.VariantScopeImpl.getMergeAssetsTask() is applicable for argument types: () values: []
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:71)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at com.wlqq.phantom.gradle.host.PhantomHostPlugin$_apply_closure1.doCall(PhantomHostPlugin.groovy:50)
由于插件apk现在在是放在assets文件夹,我怎么动态更换插件apk
能做成双开框架么?
cannot be cast to android.support.v4.app.Fragment 包错,我 剔除了啊 excludeLib "com.android.support:support-v4:28.0.0"
excludeLib "com.android.support:support-core-ui:28.0.0"
excludeLib "com.android.support:support-compat:28.0.0"
excludeLib "com.android.support:support-media-compat:28.0.0"
excludeLib "com.android.support:support-core-utils:28.0.0"
excludeLib "com.android.support:support-fragment:28.0.0"
excludeLib "com.android.support:support-annotations:28.0.0"
excludeLib "com.android.support:cursoradapter:28.0.0"
excludeLib "com.android.support:interpolator:28.0.0"
excludeLib "com.android.support:versionedparcelable:28.0.0"
excludeLib "com.android.support:documentfile:28.0.0"
excludeLib "com.android.support:customview:28.0.0"
excludeLib "com.android.support:slidingpanelayout:28.0.0"
excludeLib "com.android.support:swiperefreshlayout:28.0.0"
excludeLib "com.android.support:drawerlayout:28.0.0"
excludeLib "com.android.support:coordinatorlayout:28.0.0"
excludeLib "com.android.support:loader:28.0.0"
excludeLib "com.android.support:viewpager:28.0.0"
excludeLib "com.android.support:collections:28.0.0"
excludeLib "com.android.support:asynclayoutinflater:28.0.0"
excludeLib "com.android.support:print:28.0.0"
excludeLib "com.android.support:localbroadcastmanager:28.0.0"
Caused by: groovy.lang.MissingMethodException: No signature of method: com.android.build.gradle.internal.scope.VariantScopeImpl.getMergeAssetsTask() is applicable for argument types: () values: []
at com.wlqq.phantom.gradle.host.PhantomHostPlugin$_apply_closure1.doCall(PhantomHostPlugin.groovy:44)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:155)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:167)
at org.gradle.internal.ImmutableActionSet$SingletonSet.execute(ImmutableActionSet.java:155)
at org.gradle.internal.MutableActionSet.execute(MutableActionSet.java:35)
at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:228)
at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:222)
at com.android.build.gradle.AppExtension.addVariant(AppExtension.java:87)
at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:132)
at com.android.build.gradle.BasePlugin.lambda$createAndroidTasks$6(BasePlugin.java:789)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:775)
at com.android.build.gradle.BasePlugin.lambda$null$4(BasePlugin.java:670)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
版本:3.1.2
新建了一个项目,单独一个plugin 。只要加入apply plugin: 'com.wlqq.phantom.plugin' 这行,就运行不起来。
报错如下Cannot invoke method withWriter() on null object
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWith__ExcludeClasses__ForDebug'.
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.NullPointerException: Cannot invoke method withWriter() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
at com.wlqq.phantom.gradle.plugin.exclude.ExcludeClassesTransform.writeLibraryJarsToProguardFile(ExcludeClassesTransform.groovy:731)
at com.wlqq.phantom.gradle.plugin.exclude.ExcludeClassesTransform.writeLibraryJarsToProguardFile(ExcludeClassesTransform.groovy)
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.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
at com.wlqq.phantom.gradle.plugin.exclude.ExcludeClassesTransform.transform(ExcludeClassesTransform.groovy:115)
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)
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
as 3.41
gradle 4.4
目前为此是不是不支持androidx ?
对于支持gradle 3.3以上和支持databinding有时间表吗?
有打算写插件实现原理或者博客思路介绍吗, 期待
能不能更新支持下 Gradle 4.x + Android Gradle Plugin 3.x
Caused by: com.wlqq.phantom.library.pm.ParseApkException: install error, packageInfo is null, parse apk: /storage/emulated/0/app-debug.apk
ERROR: Could not find com.wlqq.phantom:phantom-gradle-plugin:3.1.3.
Searched in the following locations:
file:/Users/timian/.m2/repository/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.pom
file:/Users/timian/.m2/repository/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.jar
http://maven.aliyun.com/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.pom
http://maven.aliyun.com/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.jar
https://jcenter.bintray.com/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.pom
https://jcenter.bintray.com/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.jar
https://dl.google.com/dl/android/maven2/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.pom
https://dl.google.com/dl/android/maven2/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.jar
https://repo.maven.apache.org/maven2/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.pom
https://repo.maven.apache.org/maven2/com/wlqq/phantom/phantom-gradle-plugin/3.1.3/phantom-gradle-plugin-3.1.3.jar
Required by:
project :
下载的 GitHub master 分支的代码。打开工程的时候 androidstudio配置环境的时候 就会报这个错
3.3.2以后的版本貌似都无法使用
[C:\Users\Administrator.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\a72a596dc4395165407feeb32dca0018\res\color\abc_btn_colored_text_material.xml:20], original message=, tool name=Optional.of(AAPT)}
SO 的支持是一大块。virtualAPK 支持的就不是很理想。科大讯飞的语音识别就只能放在宿主里,希望能出个支持清单。拜谢!
需要一个群,以供交流解决问题,共同完善文档
这项目还更新么大佬
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.