1. Determine whether a certain class exists
public static boolean isDemoExist() {
boolean isWoExist = true;
try {
Class.forName("com.test.Demo");
} catch (Exception ex) {
isWoExist = false;
}
return isWoExist;
}
2. Determine whether the .so file exists
try {
//ApplicationInfo:用于封装应用的信息
ApplicationInfo info = application.getApplicationInfo();
String dataDir = info.dataDir;// 存放数据的路径 应用数据目录。
String nativeLibraryDir = info.nativeLibraryDir;// 本地路径 JNI本地库存放路径。
String sourceDir = info.sourceDir;// 资源路径 应用APK的全路径
String publicSourceDir = info.publicSourceDir;// 公共资源路径
int targetSdkVersion = info.targetSdkVersion;// // 应用所需的最小sdk版本
Log.e(PlatformLog.TAG,"dataDir: "+dataDir);
Log.e(PlatformLog.TAG,"nativeLibraryDir: "+nativeLibraryDir);
Log.e(PlatformLog.TAG,"sourceDir: "+sourceDir);
Log.e(PlatformLog.TAG,"publicSourceDir: "+publicSourceDir);
Log.e(PlatformLog.TAG,"targetSdkVersion: "+targetSdkVersion);
ZipFile file = new ZipFile(info.sourceDir);
String[] soPath = {"arm64-v8a","armeabi-v7a","armeabi","x86_64","x86"};
for (String path : soPath) {
ZipEntry zipEntry = file.getEntry("lib/"+path+"/xxx.so");
if (zipEntry != null) {
//so文件存在
//加载OAID so文件
System.loadLibrary("xxx");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG,"so文件异常: "+e.toString());
}