我的应用程序使用支持 armeabi-v7a 和 x86
的本机库我正在使用Google Play多个 apk 支持功能来分发两个 apks 但有时它会检测到目标设备的架构错误,而更高版本代码的 apk 会安装在错误的架构上
当然这不正常,但对我们来说绝对不是一件小事
所以我想实现类似 MXplayer 的东西,它有一个主应用程序apk和其他apks,用于支持不同架构的codex
我如何支持这种行为?
提前致谢:)
答案 0 :(得分:1)
在运行时加载APK。这就是插件(即主题,可下载资源等)的完成方式。
/** Returns APK full path for application */
public static String getAPKPath(final Context context, final String appName)
throws PackageManager.NameNotFoundException {
final PackageManager pm = context.getPackageManager();
return pm.getApplicationInfo(appName, 0).sourceDir;
}
/**
* Returns a classloader that has APK loaded. APK must be installed.
* @param context Android Context
* @param app APK application full name
* @return Classloader that has APK loaded
*/
public static ClassLoader loadAPK(final Context context, final String app)
throws PackageManager.NameNotFoundException {
final String apkPath = getAPKPath(context, app);
final File tmpDir = context.getDir("tmp", 0);
final DexClassLoader classLoader = new DexClassLoader(apkPath,
tmpDir.getAbsolutePath(), null, context.getClassLoader());
return classLoader;
}