Arquivos de Expanssão OBB
Página 1 de 1
Arquivos de Expanssão OBB
Olá amigos eu estou desenvovlendo um projeto e ele esta com 92,5 mb, e ainda não esta completo e pelo visto ira ultrapassar os 100mb permitido pelo Google Play, ai comecei a pesquisar sobre arquivo de expansão, tem uma parte que eu li que dizia isso "Se o aplicativo começar e não conseguir encontrar e carregar o OBB, apenas a primeira Cena está disponível", e quando eu utilizei esse recurso pela primeira vez tive relatos sobre o ocorrido.
Foi no meu jogo de carro "Baixos Brasil" muitas pessoas reclamaram e eu nao sabai como resolver, até o @dstaroski do forum teve esse problema.
Então oque eu fiz para resolver diminui o maximo que consegui o projeto para nao utilizar o "Arquivo de Expansão" e funcinonou.
Porém nesse projeto não tem jeito e terei que usar, eu irei deixar um Link da Unity e um de Desenvolvedores da Google.
Onde explica tudo sobre, e diz que caso a Google play não consiga fazer o download do arquivo de expassão o Apk teria que fazer sozinho. eu nao entendi muito bem essa parte nem sei como eu faria isso.
Então pessoa a ajuda de vocês para que possam me ajudar a analisar esses dois Site e chegar a uma possível solução.
Obrigadoh!
Site da Unity: https://docs.unity3d.com/Manual/android-OBBsupport.html
Site da Google: https://developer.android.com/google/play/expansion-files.html#Downloading
Foi no meu jogo de carro "Baixos Brasil" muitas pessoas reclamaram e eu nao sabai como resolver, até o @dstaroski do forum teve esse problema.
Então oque eu fiz para resolver diminui o maximo que consegui o projeto para nao utilizar o "Arquivo de Expansão" e funcinonou.
Porém nesse projeto não tem jeito e terei que usar, eu irei deixar um Link da Unity e um de Desenvolvedores da Google.
Onde explica tudo sobre, e diz que caso a Google play não consiga fazer o download do arquivo de expassão o Apk teria que fazer sozinho. eu nao entendi muito bem essa parte nem sei como eu faria isso.
Então pessoa a ajuda de vocês para que possam me ajudar a analisar esses dois Site e chegar a uma possível solução.
Obrigadoh!
Site da Unity: https://docs.unity3d.com/Manual/android-OBBsupport.html
Site da Google: https://developer.android.com/google/play/expansion-files.html#Downloading
Duarte- Programador
- PONTOS : 3354
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: Arquivos de Expanssão OBB
@Up!
Olá, alguem que ja tenha experiencia com OBB?
Estou conseguindo fazer progresso, alguem poderia me ajudar a fazer o Apk fazer o download automaticamente caso nao tenhao o arquivo.
Tem esse scrip que cria um button que da para baixar caso nao tenha o arquivo OBB.
Esse é o script que a void OnGui pega referencia.
Olá, alguem que ja tenha experiencia com OBB?
Estou conseguindo fazer progresso, alguem poderia me ajudar a fazer o Apk fazer o download automaticamente caso nao tenhao o arquivo.
Tem esse scrip que cria um button que da para baixar caso nao tenha o arquivo OBB.
- Código:
using UnityEngine;
using System.Collections;
public class DownloadObbExample : MonoBehaviour {
void OnGUI()
{
if (!GooglePlayDownloader.RunningOnAndroid())
{
GUI.Label(new Rect(10, 10, Screen.width-10, 20), "Use GooglePlayDownloader only on Android device!");
return;
}
string expPath = GooglePlayDownloader.GetExpansionFilePath();
if (expPath == null)
{
GUI.Label(new Rect(10, 10, Screen.width-10, 20), "External storage is not available!");
}
else
{
string mainPath = GooglePlayDownloader.GetMainOBBPath(expPath);
string patchPath = GooglePlayDownloader.GetPatchOBBPath(expPath);
GUI.Label(new Rect(10, 10, Screen.width-10, 20), "Main = ..." + ( mainPath == null ? " Não encontrado!" : mainPath.Substring(expPath.Length)));
GUI.Label(new Rect(10, 25, Screen.width-10, 20), "Patch = ..." + (patchPath == null ? " Não encontrado!" : patchPath.Substring(expPath.Length)));
if (mainPath == null || patchPath == null)
if (GUI.Button(new Rect(10, 100, 100, 100), "BAIXAR"))
GooglePlayDownloader.FetchOBB();
}
}
}
Esse é o script que a void OnGui pega referencia.
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
using System;
public class GooglePlayDownloader
{
private static AndroidJavaClass detectAndroidJNI;
public static bool RunningOnAndroid()
{
if (detectAndroidJNI == null)
detectAndroidJNI = new AndroidJavaClass("android.os.Build");
return detectAndroidJNI.GetRawClass() != IntPtr.Zero;
}
private static AndroidJavaClass Environment;
private const string Environment_MEDIA_MOUNTED = "mounted";
static GooglePlayDownloader()
{
if (!RunningOnAndroid())
return;
Environment = new AndroidJavaClass("android.os.Environment");
using (AndroidJavaClass dl_service = new AndroidJavaClass("com.unity3d.plugin.downloader.UnityDownloaderService"))
{
// stuff for LVL -- MODIFY FOR YOUR APPLICATION!
dl_service.SetStatic("BASE64_PUBLIC_KEY", "KEY");
// used by the preference obfuscater
dl_service.SetStatic("SALT", new byte[]{1, 43, 256-12, 256-1, 54, 98, 256-100, 256-12, 43, 2, 256-8, 256-4, 9, 5, 256-106, 256-108, 256-33, 45, 256-1, 84});
}
}
public static string GetExpansionFilePath()
{
populateOBBData();
if (Environment.CallStatic<string>("getExternalStorageState") != Environment_MEDIA_MOUNTED)
return null;
const string obbPath = "Android/obb";
using (AndroidJavaObject externalStorageDirectory = Environment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory"))
{
string root = externalStorageDirectory.Call<string>("getPath");
return String.Format("{0}/{1}/{2}", root, obbPath, obb_package);
}
}
public static string GetMainOBBPath(string expansionFilePath)
{
populateOBBData();
if (expansionFilePath == null)
return null;
string main = String.Format("{0}/main.{1}.{2}.obb", expansionFilePath, obb_version, obb_package);
if (!File.Exists(main))
return null;
return main;
}
public static string GetPatchOBBPath(string expansionFilePath)
{
populateOBBData();
if (expansionFilePath == null)
return null;
string main = String.Format("{0}/patch.{1}.{2}.obb", expansionFilePath, obb_version, obb_package);
if (!File.Exists(main))
return null;
return main;
}
public static void FetchOBB()
{
using (AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
AndroidJavaObject current_activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent",
current_activity,
new AndroidJavaClass("com.unity3d.plugin.downloader.UnityDownloaderActivity"));
int Intent_FLAG_ACTIVITY_NO_ANIMATION = 0x10000;
intent.Call<AndroidJavaObject>("addFlags", Intent_FLAG_ACTIVITY_NO_ANIMATION);
intent.Call<AndroidJavaObject>("putExtra", "unityplayer.Activity",
current_activity.Call<AndroidJavaObject>("getClass").Call<string>("getName"));
current_activity.Call("startActivity", intent);
if (AndroidJNI.ExceptionOccurred() != System.IntPtr.Zero)
{
Debug.LogError("Exception occurred while attempting to start DownloaderActivity - is the AndroidManifest.xml incorrect?");
AndroidJNI.ExceptionDescribe();
AndroidJNI.ExceptionClear();
}
}
}
// This code will reuse the package version from the .apk when looking for the .obb
// Modify as appropriate
private static string obb_package;
private static int obb_version = 0;
private static void populateOBBData()
{
if (obb_version != 0)
return;
using (AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
AndroidJavaObject current_activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");
obb_package = current_activity.Call<string>("getPackageName");
AndroidJavaObject package_info = current_activity.Call<AndroidJavaObject>("getPackageManager").Call<AndroidJavaObject>("getPackageInfo", obb_package, 0);
obb_version = package_info.Get<int>("versionCode");
}
}
}
Duarte- Programador
- PONTOS : 3354
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Tópicos semelhantes
» Arquivos em Nuvem
» Arquivos NUGET
» Arquivos Externos (Android/PC)
» Salvar arquivos binário
» (Dúvida) Carregar arquivos
» Arquivos NUGET
» Arquivos Externos (Android/PC)
» Salvar arquivos binário
» (Dúvida) Carregar arquivos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos