Android支持Split Apks后,如何获得指定包名下的所有类
Posted 铭久
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android支持Split Apks后,如何获得指定包名下的所有类相关的知识,希望对你有一定的参考价值。
从android5.0以后,支持多个apk动态部署,这导致以前通过单一apk获取包路径下的所有类的方法失效,不过稍微修改一下原先的代码就可以,代码如下
1 public static final List<Class<?>> getClassesFromPackage(Context ctx, String pkgName) { 2 List<Class<?>> rtnList = new ArrayList<Class<?>>(); 3 String[] apkPaths = ctx.getApplicationInfo().splitSourceDirs;// 获得所有的APK的路径 4 DexFile dexfile = null; 5 Enumeration<String> entries = null; 6 String name = null; 7 for (String apkPath : apkPaths) { 8 try { 9 dexfile = new DexFile(apkPath);// 获得编译后的dex文件 10 entries = dexfile.entries();// 获得编译后的dex文件中的所有class 11 while (entries.hasMoreElements()) { 12 name = (String) entries.nextElement(); 13 if (name.startsWith(pkgName)) {// 判断类的包名是否符合 14 rtnList.add(Class.forName(name)); 15 } 16 } 17 } catch (ClassNotFoundException | IOException e) { 18 } finally { 19 try { 20 if (dexfile != null) { 21 dexfile.close(); 22 } 23 } catch (IOException e) { 24 } 25 } 26 } 27 return rtnList; 28 }
以上是关于Android支持Split Apks后,如何获得指定包名下的所有类的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅解决:The currently selected variant “debug“ uses split APKs, but none of the 1 split...
我的Android进阶之旅解决:The currently selected variant “debug“ uses split APKs, but none of the 1 split...
在模拟器上运行Android项目时报错:DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
Android:从 Android 代码中获取 APKs minSdkVersion [重复]
com.android.ddmlib.InstallException: Unable to upload some APKs?