如何创建Apk扩展

时间:2015-04-02 15:14:48

标签: android

我的应用程序使用支持 armeabi-v7a x86

的本机库

我正在使用Google Play多个 apk 支持功能来分发两个 apks 但有时它会检测到目标设备的架构错误,而更高版本代码的 apk 会安装在错误的架构上

当然这不正常,但对我们来说绝对不是一件小事

所以我想实现类似 MXplayer 的东西,它有一个主应用程序apk和其他apks,用于支持不同架构的codex

我如何支持这种行为?

提前致谢:)

1 个答案:

答案 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;
}