私はJavaの反射を使用するコードを書いています。私は、このメソッドを使用して、特定のクラスのための私のパッケージをスキャンしています:Java ReflectionsはAndroidのインスタント実行では機能しません
/**
* Called to get list of classes included in the current project
*
* @param packageName the name of application package
* @return array of classes' names
*/
private String[] getClassesOfPackage(String packageName) {
ArrayList<String> classes = new ArrayList<>();
try {
String packageCodePath = getPackageCodePath();
DexFile df = new DexFile(packageCodePath);
for (Enumeration<String> iter = df.entries(); iter.hasMoreElements();) {
String className = iter.nextElement();
if (className.contains(packageName)) {
classes.add(className);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return classes.toArray(new String[classes.size()]);
}
最近、私はインスタント実行機能を試すため2.1.0
に私のGradle
バージョンをアップグレードしたが、私は私のアプリのパッケージは通常、このメソッドから空String[]
を返すことに気づきましたこのメソッドは、名前のパッケージ内のクラスのみを返しますcom.android.tools.fd.*
私のアプリパッケージにクラスが表示されないのはなぜですか?