解决 unity 生成 android apk read Resources
http://www.cnblogs.com/solq/archive/2012/05/21/2511522.html
TextAsset t = (TextAsset)Resources.Load("skill2");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(t.text.ToString().Trim());
XmlElement n = (XmlElement)xmlDoc.SelectSingleNode("/datas/data[@skillID='1002']");
if (n != null)
{
print("+++++++++++++++++++++++++++++++++++++++++++++++++");
data += n.GetAttribute("skillID");
}
解决 unity 生成 android apk read Resources
试了很多方法都找不到 unity 的目录,,最后没有办法了,放在 Resources 目录里。。。
发觉只能读不能写,,汗,,,白费了,又重新找。。。。
续:
http://forum.unity3d.com/threads/97043-Sqlite-for-Android-help-please/page2
http://forum.unity3d.com/threads/114660-Unity-3D-Android-SQLite-Examples
http://unity3d.com/support/documentation/Manual/StreamingAssets.html
找到了 android 工程模板了。。。。
Unity\Editor\Data\PlaybackEngines\androidplayer\
就像 web 模板一样
把它复制出来,导入eclipse
好了,只能拼 android 基础了。。。。
做好放在

资料:http://www.xuanyusong.com/archives/676
http://game.ceeger.com/Manual/Plugins.html
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
解决了,,,下面说下步骤
test.txt 路径如图

void readFile(string file)
{
path = "jar:file://" + Application.dataPath + "!/assets/" + file; if (File.Exists(path))
{
stringToEdit = "yes";
}
else
{
stringToEdit = "no"; WWW www = new WWW(path);
while (!www.isDone) { } stringToEdit += " " + www.text; }
}
不知道为什么 File.Exists(path)会检测不到文件,,,不过能读取就可以了
说下
Application.persistentDataPath 是指向 android /data/data/xxx.xxx.xxx/files/
Application.dataPath 是指向 /data/app/xxx.xxx.xxx.apk
汗:http://game.ceeger.com/Manual/StreamingAssets.html 这是unity圣典翻译好了,写得很详细了,,,
难怪会检测不到文件..现在还在解决解包问题
然后复制到 Application.persistentDataPath
/////////////////////////////////////最终方式/////////////////////////////////////////
using UnityEngine;
using System.Collections;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Core;
using System;
public class Test : MonoBehaviour
{
string path = "";
string zip_file = "d:\\t.zip";
void Start()
{
path = "jar:file://" + Application.dataPath + "!/assets/";
//readFile("test.txt"); // File.WriteAllText(Application.persistentDataPath + "/xx2.txt", "xxxxxxxxxxxxxxxxxxxx"); UnZipFile(Application.dataPath, "assets"); } #region 解压资料处理fn //判断是否已经解压
bool checkDecompressingFiles(string flag_file)
{
if (!File.Exists(Application.persistentDataPath + "/" + flag_file))
{
File.WriteAllText(Application.persistentDataPath + "/" + flag_file, "a");
return false;
}
return true;
} /*
* 没有测试过
ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip();
zip.CreateZip("C:\\foo.zip", "C:\\待压缩的文件夹", true, ""); //第三个参数表示是否压缩子文件夹
zip.ExtractZip("C:\\foo.zip", "C:\\压缩后存放的文件夹", "");
如果我们只想压缩目录中的一个或部分文件,或者我们只想解压文件中的一个或部分文件,怎么办呢?那就得把最后一个参数用上,它是字符串类型的正则表达式,比如只压缩 ini 文件用:"^.*(.ini)$"。
*/ //用第三方工具去读取 zip
void UnZipFile(string zipFilePath,string dir)
{
if (checkDecompressingFiles("init.txt")) {
stringToEdit += " 已经解压过了";
return;
}else
stringToEdit += " 第一次解压";
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
// print("directoryName:" + directoryName);
// print("fileName:" + fileName); if (directoryName.Length > 0 && directoryName.Contains(dir))
{
//stringToEdit += " directoryName:" + directoryName+"\n";
Directory.CreateDirectory(Application.persistentDataPath + "/" + directoryName);
if (fileName != string.Empty)
{
using (FileStream streamWriter = File.Create(Application.persistentDataPath + "/" + theEntry.Name))
{ int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
}
}
}
} }
}
} //没有测试过下面
void CreateZipFile(string filesPath, string zipFilePath)
{ if (!Directory.Exists(filesPath))
{ return;
} try
{
string[] filenames = Directory.GetFiles(filesPath);
using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))
{ s.SetLevel(9); // 压缩级别 0-9
//s.Password = "123"; //Zip压缩文件密码
byte[] buffer = new byte[4096]; //缓冲区大小
foreach (string file in filenames)
{
ZipEntry entry = new ZipEntry(Path.GetFileName(file));
//entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
s.Finish();
s.Close();
}
}
catch (Exception ex)
{ }
} //直接用 unty www 去读取 jar 跟 zip 标准差不多吧
void readFile(string file)
{
path+= file; if (File.Exists(path))
{
stringToEdit = "yes";
}
else
{
stringToEdit = "no"; WWW www = new WWW(path);
while (!www.isDone) { } stringToEdit += " " + www.text; stringToEdit+=" ReadAllText:"+File.ReadAllText(path);
}
}
#endregion //请输入一个字符串
private string stringToEdit = ""; void Update ()
{
//点击手机返回键关闭应用程序
if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )
{
Application.Quit();
}
} void OnGUI()
{ GUILayout.TextField("persistentDataPath:" + Application.persistentDataPath);
GUILayout.TextField("dataPath:" + Application.dataPath);
GUILayout.TextField("temporaryCachePath:" + Application.temporaryCachePath); stringToEdit = GUILayout.TextArea (stringToEdit, GUILayout.Width(300),GUILayout.Height(250));
} }
//用到解压的库。。。http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
//感谢:雨松MOMO http://www.xuanyusong.com/
//示例demo http://files.cnblogs.com/solq/android_read_Resources.zip
解决 unity 生成 android apk read Resources的更多相关文章
- unity生成Android apk
前提:本文默认你安装了unity5.6版本,不是这个版本的没有Gradle(new)选项,也默认你安装了Android Studio并配置好了环境变量. Gradle(new):打包Android S ...
- Xamarin 打包生成 Android apk 文件
Visual Studio 支持 apk 发布 Xamarin.Forms项目或Xamarin.Android项目开发完成之后需要发布.比较常规的发布方式是生成 apk 文件,微软也考虑到开发者有发布 ...
- [RN] React Native 生成 Android APK
在用模拟器或者真机调试完App后,需要将App打包成Apk发布文件. 下面简单记录下打包步骤: 第一:生成签名密钥 这一步的操作主要是生成需要的签名密钥,供android调用,生成的文件待用 在项目根 ...
- 已解决(转)关于android - apk(解析错误)解析程序包时出现问题
如果开发的应用用户较多,那么必须保证应用在多个版本不同的设备上能够正确的运行.这就要求对各个版本比较熟悉,知道在什么版本中加入了什么新的功能或特性.但是Android的版本太多了,是个令人头疼的问题. ...
- [Unity] 导出Android APK包出错
确认Android环境是OK的. 检查 StreamingAssets 目录下是否有中文的文件名 检查其它目录的中文文件名. 移除一些插件再试.
- Unity编译Android的原理解析和apk打包分析
作者介绍:张坤 最近由于想在Scene的脚本组件中,调用Android的Activity的相关接口,就需要弄明白Scene和Activity的实际对应关系,并对Unity调用Android的部分原理进 ...
- Cordova打包vue项目生成Apk (解决cordova build android抛出的zip问题)
最近对vue前端框架情有独钟.但研究了一下怎么把vue项目打包成android apk来玩玩. 首先讲一下创建vue2.x项目.其实在之前的文章中都有写过,有兴趣的同学可以去看看.http://www ...
- android studio 项目生成的apk变小的原因
问题:感觉直接在apk文件夹下面拷出来的apk不能安装使用,而且apk比较小,可能就是这个问题引起的 Android Studio版本升级到2.3后,增加了instant run功能,对项目的buil ...
- Xamarin如何生成Android项目的APK
Xamarin如何生成Android项目的APK 首先需要选择Release模式生成项目.然后从“生成”菜单中选择Export Android Package命令,就可以导出APK包.APK保存在An ...
随机推荐
- WPF触发器(Trigger、DataTrigger、EventTrigger)
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
- 2016/07/07 PHP的线程安全与非线程安全版本的区别
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...
- cocos2d-js 运行动画
1.添加动画缓存 //添加动画缓存 cc.spriteFrameCache.addSpriteFrames(res.bug_plist); this.spriteSheet = new cc.Spri ...
- 那些让你代码思维和能力有较大的提升Java源码(转)
对于学习J2EE的框架有很大的帮助,代码里使用了各种设计模式.事件机制.Java8语法.代码量也很小,web服务使用Netty作为支持,对HTTP/网络想研究的一定是你的必读品.目前在写 Blade- ...
- 解决Windows x64bit环境下无法使用PLSQL Developer连接到Oracle DB中的问题
本文是原创文章,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/46416455 解决Windows x64bit环境下无法使用PLSQ ...
- Machine Learning in Action(2) 决策树算法
决策树也是有监督机器学习方法. 电影<无耻混蛋>里有一幕游戏,在德军小酒馆里有几个人在玩20问题游戏,游戏规则是一个设迷者在纸牌中抽出一个目标(可以是人,也可以是物),而猜谜者可以提问题, ...
- [NOIP2011提高组day2]-3-观光公交
3.观光公交 (bus.cpp/c/pas) [问题描述] 风景迷人的小城 Y 市,拥有 n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光 ...
- POJ1006 Biorhythms —— 中国剩余定理
题目链接:https://vjudge.net/problem/POJ-1006 Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total ...
- centos6.5安装jdk
1.查看Linux环境自带JDK 使用命令:# rpm -qa|grep gcj 显示内容其中包含相应信息# java-x.x.x-gcj-compat-x.x.x.x-xxjpp# java-x.x ...
- html5--5-1 了解canvas元素
html5--5-1 了解canvas元素 学习要点 如何在HTML5文档中添加canvas元素 canvas的属性 了解canvas坐标系 了解script元素 绘制一条直线(准确的说是线段) 什么 ...