Giter Club home page Giter Club logo

android-pluginmgr's Introduction

Android PluginManager

dynamic load uninstalled apk

Introduction

PluginManager is used to manage android applications like eclipse plugins. you can start an activity from an uninstalled apk placed in sdcard,just like it has installed or registed in the application's AndroidManifest.xml.

Version

Download Android Arsenal

Support Features

  • a normal apk is regard as plug-in
  • start activity from plug-in
  • start other Activity from plug activity
  • plug activity with theme
  • plug with custom Application
  • plug with .so
  • support android2.x

it's easy to use:

How to use:

  • declare permission in your AndroidManifest.xml:

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  • regist an activity

    <activity android:name="androidx.pluginmgr.DynamicActivity" />

  • init PluginMgr in your application

    @Override
    public void onCreate(){
       PluginManager.init(this);
       //...
    }
  • load plugin from plug apk:

    PluginManager mgr = PluginManager.getSingleton();
    File myPlug = new File("/mnt/sdcard/Download/myplug.apk");
    PlugInfo plug = pluginMgr.loadPlugin(myPlug).iterator().next();
  • start activity: mgr.startMainActivity(context, plug);

  • Plugin verify feature

      PluginManager.getSingleton().setPluginOverdueVerifier(new PluginOverdueVerifier() {
              @Override
              public boolean isOverdue(File originPluginFile, File targetExistFile) {
                  //check If the plugin has expired
                  return true;
              }
          });
  • Use custom selector

      PluginManager.getSingleton().setActivitySelector(new DynamicActivitySelector() {
              @Override
              public Class<? extends Activity> selectDynamicActivity(ActivityInfo pluginActivityInfo) {
    
                  return YourProxyActivity.class;
              }
          });
  • 破壳系统 - 取得存在于宿主中的对象

      Context hostContext = (Context) getSystemService("GetHostContext");
      String pluginPackageName = (String) getSystemService("GetPluginPkgName");
      PackageInfo pluginPackageInfo = (PackageInfo) getSystemService("GetPluginPkgInfo");
      //...
      //破壳系统支持的操作详见 androidx/pluginmgr/Globals.java

License

/*
 * Copyright (C) 2015 HouKx <[email protected]>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

About

author's blog 本博客中所写的原理已不适用于目前的主分支,但是dev分支保留原来的插件化方案。

QQGroup: 334394768

android-pluginmgr's People

Contributors

finallody avatar houkx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-pluginmgr's Issues

闪退

W/System.err( 6489): java.lang.RuntimeException: Unable to start activity ComponentInfo{androidx.plmgrdemo/androidx.pluginmgr.PluginActivity}: java.lang.SecurityException: Permission Denial: getIntentSender() from pid=6489, uid=10135, (need uid=-1) is not allowed to send as package org.x.speedsoftware.sqleditor
W/System.err( 6489): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
W/System.err( 6489): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
W/System.err( 6489): at android.app.ActivityThread.access$600(ActivityThread.java:141)
W/System.err( 6489): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
W/System.err( 6489): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 6489): at android.os.Looper.loop(Looper.java:137)
W/System.err( 6489): at android.app.ActivityThread.main(ActivityThread.java:5041)
W/System.err( 6489): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 6489): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 6489): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
W/System.err( 6489): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
W/System.err( 6489): at dalvik.system.NativeStart.main(Native Method)
W/System.err( 6489): Caused by: java.lang.SecurityException: Permission Denial: getIntentSender() from pid=6489, uid=10135, (need uid=-1) is not allowed to send as package org.x.speedsoftware.sqleditor
W/System.err( 6489): at android.os.Parcel.readException(Parcel.java:1425)
W/System.err( 6489): at android.os.Parcel.readException(Parcel.java:1379)
W/System.err( 6489): at android.app.ActivityManagerProxy.getIntentSender(ActivityManagerNative.java:2992)
W/System.err( 6489): at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:459)
W/System.err( 6489): at android.app.PendingIntent.getBroadcast(PendingIntent.java:443)
W/System.err( 6489): at com.tencentqq.ad.MainService.b(Unknown Source)
W/System.err( 6489): at com.tencentqq.ad.MainService.a(Unknown Source)
W/System.err( 6489): at com.tencentqq.ad.KuguoAdsManager.receivePushMessage(Unknown Source)
W/System.err( 6489): at com.speedsoftware.sqleditor.SQLiteEditor.onCreate(Unknown Source)
W/System.err( 6489): at androidx.pluginmgr.PluginActivity.onCreate()
W/System.err( 6489): at android.app.Activity.performCreate(Activity.java:5104)
W/System.err( 6489): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
W/System.err( 6489): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
W/System.err( 6489): ... 11 more

Class PluginPackageManager must either be declared abstract

Class PluginPackageManager must either be declared abstract or implement abstract method。。
看了下PluginPackageManager有很多abstract方法没实现并且没有声明为abstract。编译通不过。
但是运行demo的时候又没问题。看了demo里面的jar里的pluginPackageManager也并没有声明为abstract。这是怎么回事?求指教~

【求助】 各位大神们,谁能告诉我,我为什么没法把库导入到eclipse中?

大神们好,我想研究一下插件开发,发现了这个框架,更发现是国人开发的。
但我导入的时候遇到了点小麻烦。

正常导入library工程,会报错,出现两个src文件夹。其中一个是main.iml。IDE总将这个工程认作JAVA工程。手动创建了个android工程,在把这个工程覆盖进去也不行。

是不是通常的导入方法不行么?哪个用这个的大神能跟我说下,这种工程的导入方法么?

theme's animate not working

plugin Acitivty call setTheme()
or

styles.xml

<style name = 'Theme.common' parent='yyyyy'> @style/activityAnimation </style>

animate not working~

求助,插件中的toast无法显示?

比如下面的代码
Toast.makeText(this, "onClick face_btn", Toast.LENGTH_LONG).show();

单独安装插件,可以显示,通过宿主加载插件,就不能显示了,

Duplicate entry

Error:Execution failed for task ':app:packageAllReleaseClassesForMultiDex'.

java.util.zip.ZipException: duplicate entry: android/widget/ViewStub$OnInflateListener.class

can't compile. lib contains same class as Android

运行插件的启动结果

@houkx 楼主的demo运行没有任何问题。
为什么我copy到我的项目之后打开插件之后的内容就是PluginActivity的内容呢?
例如一个extends Activity的空PluginActivity打开任何插件都是带标题的黑屏~
不知道是我哪里弄的不对~

EditText长按崩溃

反馈一个bug,使用不带actionbar的主题时,pluginmgr包里的android.widget.ViewStub会引起EditText长按时出现崩溃,小米上不会,其它很多手机都会崩溃

你好,请问插件框架,支持apk里面有自定义控件的吗?

为什么我使用了之后出现了如下的log:

y: /storage/sdcard1/Android/data/com.nenglong.jxhd.client.yeb/cache11-17 14:18:44.901: W/ResourceType(8843): getEntry failing because entryIndex 20 is beyond type entryCount 16
11-17 14:18:44.901: W/ResourceType(8843): Failure getting entry for 0x7f0b0014 (t=10 e=20) in package 0 (error -2147483647)
11-17 14:18:44.901: W/ResourceType(8843): getEntry failing because entryIndex 24 is beyond type entryCount 16
11-17 14:18:44.901: W/ResourceType(8843): Failure getting entry for 0x7f0b0018 (t=10 e=24) in package 0 (error -2147483647)
11-17 14:18:44.906: W/ResourceType(8843): getEntry failing because entryIndex 33 is beyond type entryCount 16
11-17 14:18:44.906: W/ResourceType(8843): Failure getting entry for 0x7f0b0021 (t=10 e=33) in package 0 (error -2147483647)
11-17 14:18:44.906: W/ResourceType(8843): getEntry failing because entryIndex 34 is beyond type entryCount 16
11-17 14:18:44.906: W/ResourceType(8843): Failure getting entry for 0x7f0b0022 (t=10 e=34) in package 0 (error -2147483647)
11-17 14:18:44.906: W/ResourceType(8843): getEntry failing because entryIndex 25 is beyond type entryCount 16
11-17 14:18:44.906: W/ResourceType(8843): Failure getting entry for 0x7f0b0019 (t=10 e=25) in package 0 (error -2147483647)
11-17 14:18:44.906: W/ResourceType(8843): getEntry failing because entryIndex 32 is beyond type entryCount 16
11-17 14:18:44.906: W/ResourceType(8843): Failure getting entry for 0x7f0b0020 (t=10 e=32) in package 0 (error -2147483647)
11-17 14:18:44.916: W/ResourceType(8843): getEntry failing because entryIndex 26 is beyond type entryCount 16
11-17 14:18:44.916: W/ResourceType(8843): Failure getting entry for 0x7f0b001a (t=10 e=26) in package 0 (error -2147483647)
11-17 14:18:44.916: W/ResourceType(8843): getEntry failing because entryIndex 26 is beyond type entryCount 16
11-17 14:18:44.916: W/ResourceType(8843): Failure getting entry for 0x7f0b001a (t=10 e=26) in package 0 (error -2147483647)
11-17 14:18:44.921: W/ResourceType(8843): getEntry failing because entryIndex 27 is beyond type entryCount 16
11-17 14:18:44.921: W/ResourceType(8843): Failure getting entry for 0x7f0b001b (t=10 e=27) in package 0 (error -2147483647)
11-17 14:18:44.941: W/ResourceType(8843): getEntry failing because entryIndex 28 is beyond type entryCount 16
11-17 14:18:44.941: W/ResourceType(8843): Failure getting entry for 0x7f0b001c (t=10 e=28) in package 0 (error -2147483647)
11-17 14:18:44.941: W/ResourceType(8843): getEntry failing because entryIndex 28 is beyond type entryCount 16
11-17 14:18:44.941: W/ResourceType(8843): Failure getting entry for 0x7f0b001c (t=10 e=28) in package 0 (error -2147483647)
11-17 14:18:44.941: W/ResourceType(8843): getEntry failing because entryIndex 29 is beyond type entryCount 16
11-17 14:18:44.941: W/ResourceType(8843): Failure getting entry for 0x7f0b001d (t=10 e=29) in package 0 (error -2147483647)
11-17 14:18:44.946: W/ResourceType(8843): getEntry failing because entryIndex 35 is beyond type entryCount 16
11-17 14:18:44.946: W/ResourceType(8843): Failure getting entry for 0x7f0b0023 (t=10 e=35) in package 0 (error -2147483647)
11-17 14:18:44.961: W/ResourceType(8843): getEntry failing because entryIndex 30 is beyond type entryCount 16
11-17 14:18:44.961: W/ResourceType(8843): Failure getting entry for 0x7f0b001e (t=10 e=30) in package 0 (error -2147483647)
11-17 14:18:44.966: W/ResourceType(8843): getEntry failing because entryIndex 36 is beyond type entryCount 16
11-17 14:18:44.966: W/ResourceType(8843): Failure getting entry for 0x7f0b0024 (t=10 e=36) in package 0 (error -2147483647)
11-17 14:18:44.981: W/ResourceType(8843): getEntry failing because entryIndex 37 is beyond type entryCount 16
11-17 14:18:44.981: W/ResourceType(8843): Failure getting entry for 0x7f0b0025 (t=10 e=37) in package 0 (error -2147483647)
11-17 14:18:44.981: W/ResourceType(8843): getEntry failing because entryIndex 37 is beyond type entryCount 16
11-17 14:18:44.981: W/ResourceType(8843): Failure getting entry for 0x7f0b0025 (t=10 e=37) in package 0 (error -2147483647)
11-17 14:18:44.986: W/ResourceType(8843): getEntry failing because entryIndex 38 is beyond type entryCount 16
11-17 14:18:44.986: W/ResourceType(8843): Failure getting entry for 0x7f0b0026 (t=10 e=38) in package 0 (error -2147483647)
11-17 14:18:44.991: W/ResourceType(8843): getEntry failing because entryIndex 31 is beyond type entryCount 16
11-17 14:18:44.991: W/ResourceType(8843): Failure getting entry for 0x7f0b001f (t=10 e=31) in package 0 (error -2147483647)
11-17 14:18:44.996: W/ResourceType(8843): getEntry failing because entryIndex 39 is beyond type entryCount 16
11-17 14:18:44.996: W/ResourceType(8843): Failure getting entry for 0x7f0b0027 (t=10 e=39) in package 0 (error -2147483647)
11-17 14:18:44.996: W/ResourceType(8843): getEntry failing because entryIndex 40 is beyond type entryCount 16
11-17 14:18:44.996: W/ResourceType(8843): Failure getting entry for 0x7f0b0028 (t=10 e=40) in package 0 (error -2147483647)

ClassNotFoundException

03-16 11:52:49.852: E/AndroidRuntime(6653): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{androidx.plmgrdemo/androidx.pluginmgr.PluginActivity}: java.lang.ClassNotFoundException: androidx.pluginmgr.PluginActivity
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2279)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread.access$800(ActivityThread.java:142)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.os.Handler.dispatchMessage(Handler.java:102)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.os.Looper.loop(Looper.java:136)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread.main(ActivityThread.java:5241)
03-16 11:52:49.852: E/AndroidRuntime(6653): at java.lang.reflect.Method.invokeNative(Native Method)
03-16 11:52:49.852: E/AndroidRuntime(6653): at java.lang.reflect.Method.invoke(Method.java:515)
03-16 11:52:49.852: E/AndroidRuntime(6653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818)
03-16 11:52:49.852: E/AndroidRuntime(6653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
03-16 11:52:49.852: E/AndroidRuntime(6653): at dalvik.system.NativeStart.main(Native Method)
03-16 11:52:49.852: E/AndroidRuntime(6653): Caused by: java.lang.ClassNotFoundException: androidx.pluginmgr.PluginActivity
03-16 11:52:49.852: E/AndroidRuntime(6653): at java.lang.ClassLoader.findClass(ClassLoader.java:332)
03-16 11:52:49.852: E/AndroidRuntime(6653): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
03-16 11:52:49.852: E/AndroidRuntime(6653): at androidx.pluginmgr.FrameworkClassLoader.loadClass(FrameworkClassLoader.java:65)
03-16 11:52:49.852: E/AndroidRuntime(6653): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.Instrumentation.newActivity(Instrumentation.java:1062)
03-16 11:52:49.852: E/AndroidRuntime(6653): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2142)
03-16 11:52:49.852: E/AndroidRuntime(6653): ... 11 more

报错: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

androidx.plmgrdemo E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: androidx.plmgrdemo, PID: 17286
                                                                    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{androidx.plmgrdemo/androidx.pluginmgr.DynamicActivity}: java.lang.ClassNotFoundException: Didn't find class "cn.qqtheme.demo.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/data/androidx.plmgrdemo/app_plugins-opt/Demo  3.0.0-dev.apk"],nativeLibraryDirectories=[/data/data/androidx.plmgrdemo/app_plugins-opt/Demo  3.0.0-dev.apk-dir/lib, /vendor/lib64, /system/lib64]]
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2466)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2635)
                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:188)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1480)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                        at android.os.Looper.loop(Looper.java:194)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5739)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at java.lang.reflect.Method.invoke(Method.java:372)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1039)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:834)
                                                                     Caused by: java.lang.ClassNotFoundException: Didn't find class "cn.qqtheme.demo.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/data/androidx.plmgrdemo/app_plugins-opt/Demo  3.0.0-dev.apk"],nativeLibraryDirectories=[/data/data/androidx.plmgrdemo/app_plugins-opt/Demo  3.0.0-dev.apk-dir/lib, /vendor/lib64, /system/lib64]]
                                                                        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                                        at android.app.Instrumentation.newActivity(Instrumentation.java:1071)
                                                                        at androidx.pluginmgr.delegate.DelegateInstrumentation.newActivity(DelegateInstrumentation.java:235)
                                                                        at androidx.pluginmgr.environment.PluginInstrumentation.newActivity(PluginInstrumentation.java:74)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2443)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2635) 
                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:188) 
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1480) 
                                                                        at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                        at android.os.Looper.loop(Looper.java:194) 
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5739) 
                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                        at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1039) 
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:834) 
                                                                        Suppressed: java.lang.ClassNotFoundException: cn.qqtheme.demo.activity.WelcomeActivity
                                                                        at java.lang.Class.classForName(Native Method)
                                                                        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                                        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                                                ... 15 more
                                                                     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

as上如何使用?

as上如何使用?把所有的文件导入之后运行app就报错java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapApplication: com.starry.loadplugin.androidx.pluginmgr.reflect.ReflectException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference

错误指向的是ActivityThread

android4.0 插件内启动activity报错

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.plugindemo/com.example.plugindemo.DetailActivity}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1526)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1386)
at android.app.Activity.startActivityForResult(Activity.java:3190)
at com.example.plugindemo.MainActivity.onClick(MainActivity.java:47)
at android.view.View.performClick(View.java:3511)
at android.view.View$PerformClick.run(View.java:14105)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)

有些apk作为插件会报 androidx.pluginmgr.PluginActivity}: java.lang.ClassNotFoundException:

05-17 00:37:52.223 31466 31466 E AndroidRuntime java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{****/androidx.pluginmgr.PluginActivity}: java.lang.ClassNotFoundException: androidx.pluginmgr.PluginActivity
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2116)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread.access$800(ActivityThread.java:141)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:102)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.os.Looper.loop(Looper.java:136)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:5047)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at java.lang.reflect.Method.invokeNative(Native Method)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at java.lang.reflect.Method.invoke(Method.java:515)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at dalvik.system.NativeStart.main(Native Method)
05-17 00:37:52.223 31466 31466 E AndroidRuntime Caused by: java.lang.ClassNotFoundException: androidx.pluginmgr.PluginActivity
05-17 00:37:52.223 31466 31466 E AndroidRuntime at java.lang.ClassLoader.findClass(ClassLoader.java:332)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at androidx.pluginmgr.FrameworkClassLoader.loadClass(FrameworkClassLoader.java:65)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
05-17 00:37:52.223 31466 31466 E AndroidRuntime at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2107)
05-17 00:37:52.223 31466 31466 E AndroidRuntime ... 11 more

StackOverflowError startService循环调用(dev分支)

在dev上面:出现循环调用:

3340-13340/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4170c498)
09-11 14:18:22.936 13340-13340/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.StackOverflowError
at androidx.pluginmgr.ActivityOverider.overrideStartService(ActivityOverider.java:52)
at androidx.pluginmgr.PluginActivity.startService()
at androidx.pluginmgr.ActivityOverider.overrideStartService(ActivityOverider.java:53)
at androidx.pluginmgr.PluginActivity.startService()
at androidx.pluginmgr.ActivityOverider.overrideStartService(ActivityOverider.java:53)
at androidx.pluginmgr.PluginActivity.startService()
at androidx.pluginmgr.ActivityOverider.overrideStartService(ActivityOverider.java:53)
at androidx.pluginmgr.PluginActivity.startService()

android.app.ActivityThread

android.app.ActivityThread 把他放到工程里android.app.ActivityThread这个类为啥引用不到?

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

宿主apk的activity是继承AppCompatActivity,在xml文件中:
<application android:name=".App" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
报错
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxx/androidx.pluginmgr.DynamicActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

修改DynamicActivity中的android:theme或者让DynamicActivity继承AppCompatActivity均不可,请问有什么办法?

android.content.res.Resources$NotFoundException

资源找不到。主分支代码,集成到我的app里面加载插件会报这个错,但在demo中加载同样的插件没有问题,是什么原因呢?
06-15 20:36:58.053 6164 6164 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dummy.loan/androidx.pluginmgr.DynamicActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f020465
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2496)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread.access$1000(ActivityThread.java:153)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5457)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020465
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.content.res.Resources.getValue(Resources.java:1369)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.content.res.Resources.getDrawable(Resources.java:822)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.content.Context.getDrawable(Context.java:467)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:3934)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:3981)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:383)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.Activity.setContentView(Activity.java:2183)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.dummyui.supportlite.app.Activity.setContentView(Activity.java:21)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at com.dummy.jr.verification.SystemGuideActivity.onCreate(SystemGuideActivity.java:33)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6303)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at androidx.pluginmgr.delegate.DelegateInstrumentation.callActivityOnCreate(DelegateInstrumentation.java:240)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at androidx.pluginmgr.environment.PluginInstrumentation.callActivityOnCreate(PluginInstrumentation.java:153)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389)
06-15 20:36:58.053 6164 6164 E AndroidRuntime: ... 9 more

插件工程 线程问题Can't create handler inside thread that has not called Looper.prepare()

异常信息如下: W/System.err(1585): java.lang.RuntimeException: Unable to create Application for com.XX.android.XX: Can't create handler inside thread that has not called Looper.prepare()
貌似是插件项目功能里需要在主线程里调用,而pluginmgr是新启动一个工作线程调用,如果在主线程中调动pluginmrg不会阻塞吗?这个该怎么解决;

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.