APK 扩展文件 expPath 不存在 [英] APK expansion file expPath does not exists

查看:27
本文介绍了APK 扩展文件 expPath 不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试将我的应用程序转换为使用 APK 扩展文件,但出于某种原因,下面的代码找不到我的 APK 扩展文件的路径...

I have been trying to convert my App to use an APK Expansion file and for some reason this code below cannot find the path to my APK Expansion file ...

static String[] getAPKExpansionFiles(Context ctx, int mainVersion, int patchVersion) {
    Log.v(TAG, "Utils.getAPKExpansionFiles [27] mainVersion is " + mainVersion + " patchVersion = " + patchVersion );
    String packageName = ctx.getPackageName();
    Log.v(TAG, "Utils.getAPKExpansionFiles [27] packageName is [" + packageName + "]" );
    Vector<String> ret = new Vector<String>();
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        Log.v(TAG, "Utils.getAPKExpansionFiles [32] MEDIA_MOUNTED" );
        // Build the full path to the app's expansion files
        File root = Environment.getExternalStorageDirectory();
        Log.v(TAG, "Utils.getAPKExpansionFiles [35] root = " + root);
        File expPath = new File(root.toString() + EXP_PATH + packageName);
        Log.v(TAG, "Utils.getAPKExpansionFiles [37] expPath " + expPath );

        // Check that expansion file path exists
        if (expPath.exists()) {
                ...
        } else {
            Log.v(TAG, "Utils.getAPKExpansionFiles [60] expPath DOES NOT EXISTS" );
        }
    } else {
        Log.v(TAG, "Utils.getAPKExpansionFiles [57] NOT MEDIA_MOUNTED" );
    }
    String[] retArray = new String[ret.size()];
    ret.toArray(retArray);
    return retArray;
}

... logcat 显示了这个...

... logcat shows this ...

03-20 21:04:24.206: V/GospelofMatthewAudiobook(10965): Utils.getAPKExpansionFiles [37] expPath /mnt/sdcard/Android/obb/com.redcricket.GospelofMatthewAudiobook
03-20 21:04:24.214: V/GospelofMatthewAudiobook(10965): Utils.getAPKExpansionFiles [60] expPath DOES NOT EXISTS

...即使路径确实存在并且文件在那里,如此屏幕截图所示:

... even though the path does exists and the file is there as demonstrated in this screen shot:

我很确定我没有打字错误并且路径存在.那么为什么 expPath.exists() 会返回 false.

I am pretty certain I do not have a typo and the path exists. So why would expPath.exists() return false.

感谢泰德的回答......但我仍然在 logcat 中得到了这个......

Thanks for the answer Ted ... but I still get this in the logcat ....

03-20 21:59:48.198: V/GospelofMatthewAudiobook(11988): Utils.getAPKExpansionFiles [37] expPath /mnt/sdcard/Android/obb/com.redcricket.GospelofMatthewAudiobook/main.1.com.redcricket.GospelofMatthewAudiobook.obb
03-20 21:59:48.198: V/GospelofMatthewAudiobook(11988): Utils.getAPKExpansionFiles [60] expPath DOES NOT EXISTS

... 可能是我用 Windows 而不是 avd 创建了目录.adb 命令是什么来创建目录并将 APK 扩展 zip 文件推送到我的手机上?

... could it be that I created the directories with Windows and not avd. What would the adb command be to create the dirs and push the APK expansion zip file on to my phone?

推荐答案

您需要为文件本身命名.而不是这样:

You need to name the file itself. Instead of this:

File expPath = new File(root.toString() + EXP_PATH + packageName);

使用这个:

File expPathDir = new File(root.toString() + EXP_PATH + packageName);
File expPath = new File(expPathDir,
    String.format("main.%d.%s.obb", mainVersion, packageName));

这适用于主扩展包.您应该有一个类似的方法来访问使用格式 String.format("patch.%d.%s.obb", patchVersion, packageName)

This will work for a main expansion pack. You should have a similar method for accessing a patch that uses the format String.format("patch.%d.%s.obb", patchVersion, packageName)

文件的完整路径应该类似于

The full path to the file should be something like

/mnt/sdcard/Android/obb/com.redcricket.GospelofMatthewAudiobook/main.123./mnt/sdcard/Android/obb/com.redcricket.GospelofMatthewAudiobook.obb

这篇关于APK 扩展文件 expPath 不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆