在Eclipse中分析Android应用程序的标准方法是使用插件DDMS并创建包含所有信息的跟踪文件.如果要查看此信息,可以使用"traceview".我不喜欢我对此应用程序的第一次体验,因为您无法过滤结果.您有很多方法调用来启动您的应用程序,您不能只过滤您的代码.
我一直在寻找另一种方法.我发现本教程使用Eclipse*TPTP可视化Google*Android*性能分析数据,该数据解释了如何使用Eclipse测试和性能工具平台(TPTP)性能分析工具来可视化Android性能分析数据.感谢上一篇文章写入SD卡的权限,我设法将我的跟踪文件从Android模拟器转移到我的文件系统中.下一步是将此.trace文件转换为TPTP .trcxml文件.我没有找到他们谈论的转换器.
有谁知道我在哪里可以找到这个转换器?您是否知道使用TPTP或其他更成熟的免费分析工具分析此跟踪文件的另一种方法?你知道另一种配置Android应用程序的方法吗?提前致谢
编辑1:
我找到了一些有趣的工具,可用于分析Android应用程序的内存使用情况.为了从Eclipse中获取内存,您必须从DDMS预期中"转储HPROF文件".在此之前,您必须在DDMS首选项面板中选择"HPROF Action","保存到磁盘"操作.因此,从现在开始转储HPROF文件时,系统会询问您要保存.hprof文件的位置.您必须使用Android工具"hprof-conv"转换此文件,您可以在Android SDK安装目录"./tools"下找到该工具.最后,您现在可以使用Eclipse MAT插件查看内存使用情况统计信息.我希望它会帮助别人.如果有人知道关于分析Android应用程序的其他内容,它将会感激.谢谢
伙计们我有一个问题,当我们在android中编写一个xml时,我的代码给出了一个Exception作为权限被拒绝.任何人都可以告诉它将如何被删除.
package com.ex.createXml;
import android.app.Activity;
import android.os.Bundle;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.xmlpull.v1.XmlSerializer;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;
import android.widget.TextView;
public class createXml extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File newxmlfile = new File("/data/new.xml");
try{
newxmlfile.createNewFile();
}catch(IOException e)
{
Log.e("IOException", "Exception in create new File(");
}
FileOutputStream fileos = null;
try{
fileos = new FileOutputStream(newxmlfile);
}catch(FileNotFoundException e)
{
Log.e("FileNotFoundException",e.toString());
}
XmlSerializer …Run Code Online (Sandbox Code Playgroud) 我在AndroidManifest.xml中添加了这一行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码写入SD卡时,我收到此错误:
02-19 13:24:46.760: E/CameraTest(598): /mnt/sdcard/image.jpg: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
编辑:我正在使用添加了SDCard的Android模拟器.
编辑2:我知道现在的问题是:我已经调用了函数Environment.getExternalStorageState(),我被"删除"了.任何人都知道如何解决这个问题并建立状态MEDIA_MOUNTED
谢谢!
我想检查SD卡上是否存在文本文件.文件名是mytextfile.txt.以下是代码:
FileOutputStream fos = openFileOutput("sdcard/mytextfile.txt", MODE_WORLD_WRITEABLE);
Run Code Online (Sandbox Code Playgroud)
如何检查此文件是否存在?
我正在尝试在SD卡上创建一个文件夹和几个子目录...然后我想将我存储在/ res/raw中的文件传输到该文件夹...此外,我希望这只发生一次,该程序第一次运行.我意识到这是荒谬的开放式的,而且我要求很多......但是任何帮助都会非常感激.
我试图下载一个开始时不到22 MB的zip文件.我在这些异常之后更改了默认的BufferedInputStream,但仍然出现内存不足错误.
public void downloadFromUrl(String fileName) {
//avoid unknown host exception
try {
InetAddress i = InetAddress
.getByName("http://xxx/Android/" + fileName);
} catch (UnknownHostException e1) {
e1.printStackTrace();
}
try {
URL url = new URL("http://xxx/Android/" + fileName);
File file = new File(fileName);
long startTime = System.currentTimeMillis();
Log.d("DownloadManager", "download begining");
Log.d("DownloadManager", "download url:" + url);
Log.d("DownloadManager", "downloaded file name:" + fileName);
URLConnection ucon = url.openConnection();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, 23 * 1024);
ByteArrayBuffer baf = new ByteArrayBuffer(23 …Run Code Online (Sandbox Code Playgroud) 当我尝试写入"/ mnt/sdcard/report /"时,我在Android上遭遇"开放失败:EACCES(权限被拒绝)".我的第一步是创建"报告"文件夹,该文件夹不起作用.然后我尝试编写抛出上述异常的内容.我已将其设置<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />为应用程序标记的对等项(在...之外).我正在尝试在出现错误时在模拟器上运行JUnit检测测试.有任何想法吗?代码如下.
if (mReportDir == null) {
if (mContext.getFilesDir() != null) {
mOutputStream = mContext.openFileOutput(fileName, 0);
} else {
mOutputStream = mTargetContext.openFileOutput(fileName, 0);
}
} else {
File f = new File(mReportDir);
if (!f.exists()) {
f.mkdirs();
}
mOutputStream = new FileOutputStream(new File(mReportDir, fileName));
}
Run Code Online (Sandbox Code Playgroud)
mReportDir等于"/ mnt/sdcard/report",fileName等于"junit-report.xml",f.mkdirs返回false我相信并且永远不会创建dir.我想知道为什么我被拒绝了.我正在尝试重用自定义的JUnit Test运行器.
我在avd设置中添加了hw.sdCard = yes.启动I shell后输入mount:
~$ adb shell
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,nosuid,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc …Run Code Online (Sandbox Code Playgroud) 我正在尝试将文件从我的应用程序中保存到设备的外部存储器中.具体来说,我试图保存声音.
我已经按照每一个"教程"来做这件事,但这对我来说似乎并不特别令人困惑,但它对我来说不起作用.根本没有在SD卡上创建任何文件,更不用说实际传输信息了.
我以为我在某种程度上没有获得卡的正确路径,但无论我尝试过什么都行不通.我尝试输入"/ sdcard /",以及使用getExternalStorageDirectory()方法,以及其他随机实验.
在花了半天的时间在一些看似微不足道的事情上,我甚至不能再思考了,所以我希望你能原谅我提供的一些细节,但任何建议都会对此有所帮助.
我现在正在研究 ImageCompressor 应用程序。
我需要delete和write(更新)图像文件。在内部存储中完美运行,但 **SD 卡无法让我访问删除和写入文件。
我的应用程序如何能够在 SD 卡writedelete(可移动存储)上执行和操作?
我已经完成了没有这个的整个项目,所以我必须找到一种方法。
更新:
我已经在研究和讨论这个问题。并了解我必须使用storage access framework但我是 SAF 的新手。
我使用了一个库来压缩需要File 而不是 Uri 的照片。为此,我Uri -> File使用Intent.ACTION_OPEN_DOCUMENT并从可移动存储中选择图像。
但是对于可移动存储,我无法从 uri 中找到 Image Real Path。
我不知道这是否正确。如果在 SAF 中有任何方法可以使用 uri 压缩我的图像,请告诉我。或如何从可移动存储照片的uri 获取图像真实路径。
更新代码 SAF:
// ----------- Intent -------------
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
// ------------ On …Run Code Online (Sandbox Code Playgroud) java permissions android file-permissions storage-access-framework
android ×9
java ×3
permissions ×2
bytebuffer ×1
eclipse ×1
eclipse-tptp ×1
file ×1
outputstream ×1
profiling ×1
save ×1
sd-card ×1