2017-09-18 2 views
2

私は、通常の理由でAPK拡張ファイルを使用しなければならない大部分のネイティブAndroidゲームを手にしています。プロジェクトはAPIレベル21をターゲットとし、64ビットのみです。APK拡張ファイルのマウントに失敗しましたか?

APK拡張のダウンロードは動作します。

マウントできません:暗号化されていないobbの場合、エラー状態20(AOBB_STATE_ERROR_INTERNAL)が表示されます。暗号化されたものについて私は21(AOBB_STATE_ERROR_COULD_NOT_MOUNT)を得る。

jobbツールを使用してAPK拡張を作成します。

versionCodeはAndroidManifest.xmlのversionCodeと一致しています。

キー(使用時)は正しいです。

OBBファイルは明らかに存在している、と私はOBBが

String packageName = getPackageName(); // we're in the activity 
PackageManager pm = getPackageManager(); 
return Environment.getExternalStorageDirectory().getAbsolutePath() + 
    EXP_PATH + packageName + "/main." + 
    pm.getPackageInfo(packageName, 0).versionCode + "." + packageName + 
    ".obb";`. 

私が得る結果によってマウントパスを取得していますと、NDKの実装とし、Java実装でどちらも同じです。

私はthis was broken for yearsを理解していますが、修正されています。本当か?私は間違って何をしていますか?

答えて

1

掘削の時間と時間があり、希望をほとんど放棄した後、私は成功を収めました。そしてそれはばかげている。しかし、それは動作します。

storageManager.mountObb()(またはAStorageManager_mountObb()に入力するパスに先行するスラッシュが削除されていることを確認してください。私。

if (obbPath != null && obbPath.startsWith('/')) 
{ 
    obbPath = obbPath.substring(1); 
} 

あなたはEnvironment.getExternalStorageDirectory()から取得1は 1を持っています。

これは、誰かの時間を節約するのに役立ちます。

+0

私はそれが私の問題を解決したいと思う:(少なくとも時間を取ってくれてありがとう:)アンドロイドのobbの処理は、特にNDKから大きな冗談です –

+0

@ ViktorSehr合意。残念ながら、私が取り組んできたプロジェクトでは、完全なネイティブ活動が少なくとも不可能であることが証明されています。 Android UIやGoogleのAPIとの統合(NDKラッパーも存在しますが、理解しています)に触れるとすぐに、ANativeActivityがウィンドウに表示されます。答えが役に立たないのは申し訳ありません。お気軽に質問を投稿してください。ここにリンクすると、私は助けてくれるよう努力します。 – zyndor

+0

はい、私はちょっと面白いですが、ちょうど良い、きれいなC++(または少なくともC)APIを作るために、Googleが少数の人を雇っていないことは残念です。 (もしあなたがこのgoogleを読んでいるなら、私は雇いたいです:) –

関連する問題