精华内容
下载资源
问答
  • 背景 写了个C++的库在安卓上调用出问题了,要分析日志。之前的日志是实时打印在Android Studio的logcat里面,出问题的环境不可能搬一个电脑过去实时连接...只需要通过Native C文件传入一个可写入数据的路径,使用fop...

    背景

    写了个C++的库在安卓上调用出问题了,要分析日志。之前的日志是实时打印在Android Studio的logcat里面,出问题的环境不可能搬一个电脑过去实时连接。所以要把日志存到本地进行分析。
    是个没有学过安卓和Java的人,记录一下自己的应急步骤。

    C++层日志保存

    Java层的日志保存网上很多现有的库。C++那边的很简单。只需要通过Native C文件传入一个可写入数据的路径,使用fopen、flush这种C++的文件操作函数就可以实现。问题在于传入什么路径。

    安卓版本越高获取外置SD卡路径权限越难。
    本来采用方法一:

    LogPath = Environment.getExternalStorageDirectory().getPath();
    

    但获取到的路径只能可读不可写,即使已经在xml里面申请了可读可写权限,也在手机上允许了权限。网上查还要实时申请,很复杂,不懂。
    方法二:通过context获取。context实例要申明在onCreate函数里面才有效。获取到的地址可以在终端查看。电脑好像看不到?文件路径在Android/data/里面。这种方法不需要向用户获取权限。成功率比较高。context还有很多种申请路径,之后再仔细比较。
    getFilesDir()申请到的路径要电脑连上adb并且root了才能查看。太复杂了。如果只是紧急确认一些数据,不是长久性的功能,使用以下的方法足够。
    有空再研究其他方法。

    import android.content.Context;
    public class MainActivity extends AppCompatActivity {
        String dirPath = "";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Context mContext = getApplicationContext();
            dirPath = mContext.getExternalCacheDir().getPath() ;
    
        }
    
    展开全文
  • 安卓-APP应用文件路径

    2018-12-02 18:07:08
    应用文件API ... // 内部私有缓存路径,/data/user/0/com.exam.pkg/cache (6.0之后路径) context.getCacheDir().getPath() // 内部私有存贮路径,/data/user/0/com.exam.pkg/files (6....

    应用文件API

    文件目录API层

    应用文件API

    内部存贮API

    // 内部私有缓存路径,/data/user/0/com.exam.pkg/cache (6.0之后路径)

    context.getCacheDir().getPath()

    // 内部私有存贮路径,/data/user/0/com.exam.pkg/files (6.0之后路径)

    context.getFilesDir().getPath()

    外部存贮API

    // 外部私有目录路径

    // /storage/emulated/0/Android/data/com.exam.pkg/files/Pictures

    context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath()

    // 外部私有缓存目录路径

    // /storage/emulated/0/Android/data/com.exam.pkg/cache

    context.getExternalCacheDir().getPath()

    // 外部私有media目录

    Context#getExternalMediaDirs()

    Environment

    // 外部存贮根目录

    // /storage/emulated/0

    Environment.getExternalStorageDirectory().getPath()

    // 外部存贮公共目录

    Environment.getExternalStoragePublicDirectory(type).getPath()

     

     

     

    系统版本与文件路径

    系统版本

    外部存贮路径

    4.0

    /mnt/sdcard

    4.1

    /storage/sdcard0

    4.2

    /storage/sdcard0

    4.4

    /storage/emulated/0

    6.0

    /storage/emulated/0

     

     

     

    系统版本

    内部私有存贮路径

    4.0

    /data/data/packname/

    4.1

    /data/data/packname/

    4.2

    /data/data/packname/

    4.4

    /data/data/packname/

    6.0

    /data/user/0/packname/

     

     

     

     

    示例代码

    测试代码Android6.0

    /**

     * 安卓文件路径整理

     * Ref:

     * ---https://blog.csdn.net/u010937230/article/details/73303034/

     * ---https://blog.csdn.net/yshxjoy/article/details/72122358

     * ---https://blog.csdn.net/xiao_sier/article/details/78667149

     */

    public class PathUtils {

        /**

         * APP私有内部缓存目录

         * ---无ROOT权限的其他普通APP不可访问,安全

         * ---由Context提供,context提供包括package基本信息、APP应用路径、APP资源访问、数据存贮管理(SP、DB、文件)

         * ---、四大组件基本操作等服务

         * ---主要用于存放缓存文件,当系统的内存存储空间紧张时,该目录下的文件会被删除掉

         * /data/user/0/com.simple.common/cache

         *

         * @param context

         * @return

         */

        public static String getCacheDir(Context context) {

            return context.getCacheDir().getPath();

        }

     

        /**

         * APP私有内部存贮路径

         * ---无ROOT权限其他普通APP不可访问,安全

         * ---卸载应用程序时会被删除掉

         * /data/user/0/com.simple.common/files

         * @param context

         * @return

         */

        public static String getFilesDir(Context context) {

            return context.getFilesDir().getPath();

        }

     

        /**

         * APP私有外部存贮路径

         * ---在外部存贮中,其他应用可访问

         * {@link Context#getExternalFilesDirs(String type)}

         * {@link Context#getExternalCacheDirs()}

         * {@link Context#getExternalMediaDirs()}

         * /storage/emulated/0/Android/data/com.simple.common/files/Pictures

         * @param context

         * @return

         */

        public static String getExternalFilesDir(Context context) {

            return context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath();

        }

     

        /**

         * APP私有外部缓存目录

         * ---在外部存贮中,其他应用可访问

         * /storage/emulated/0/Android/data/com.simple.common/cache

         * @param context

         * @return

         */

        public static String getExternalCacheDir(Context context) {

            return context.getExternalCacheDir().getPath();

        }

     

        /**

         * 外部存贮目录

         * ---由Environment提供,主要有:

         * ------getExternalStorageDirectory

         * ------getExternalStoragePublicDirectory

         * /storage/emulated/0

         * @return

         */

        public static String getExternalStorageDirectory() {

            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

                return Environment.getExternalStorageDirectory().getPath();

            } else {

                return null;

            }

     

        }

     

        /**

         * 外部公共存贮目录

         * /storage/emulated/0/DCIM

         * @return

         */

        public static String getExternalStoragePublicDirectory() {

            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

                return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();

            } else {

                return null;

            }

     

        }

    }

    展开全文
  • 安卓App流量统计

    2017-11-16 12:56:00
    安卓App流量统计 12 OCT 2013 android流量简介 流量统计文件:路径/proc/net/dev 如上图: lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量. ...

    http://keepcleargas.bitbucket.org/2013/10/12/android-App-Traffic.html

    安卓App流量统计

    12 OCT 2013

    android流量简介

    • 流量统计文件:路径/proc/net/dev

    流量统计图片

    如上图: lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量.

    • /sys/class/net/下 可以找到相关类别(如rmnet0)的目录.在其子目录statistics下游rxbytes和txbytes记录收发流量.

    • /proc/uid_stat/{uid}/tcp_rcv记录该uid应用下载流量字节,/proc/uid_stat/{uid}/tcp_snd有该uid应用上传流量字节

    TrafficStats学习

    static long  getMobileRxBytes()  //获取通过Mobile连接收到的字节总数,不包含WiFi  
        static long  getMobileRxPackets()  //获取Mobile连接收到的数据包总数  
        static long  getMobileTxBytes()  //Mobile发送的总字节数  
        static long  getMobileTxPackets()  //Mobile发送的总数据包数  
        static long  getTotalRxBytes()  //获取总的接受字节数,包含Mobile和WiFi等  
        static long  getTotalRxPackets()  //总的接受数据包数,包含Mobile和WiFi等  
        static long  getTotalTxBytes()  //总的发送字节数,包含Mobile和WiFi等  
        static long  getTotalTxPackets()  //发送的总数据包数,包含Mobile和WiFi等   
        static long  getUidRxBytes(int uid)  //获取某个网络UID的接受字节数  
        static long  getUidTxBytes(int uid) //获取某个网络UID的发送字节数

    备注:TrafficStats类在Android 2.2 API Level(8)之后出现。

    设计一个合理的APP流量统计

    • 记录某App开关机流量使用

    因为getUidRxBytes(int uid)和 getUidTxbytes(int uid)记录的是 该uid应用 在手机启动到你使用这个方法时的流量统计.故需要在手机关机时记录你这个程序在这次开关机过程中的使用流量记录.

    public class ShutDownReceiver extends BroadcastReceiver{
            @Override
            public void onReceive(Context context, Intent intent) {
                //在关机时 记录uid应用 本次流量结余
            }
        }
    • 记录Wifi中的流量使用

    因为getUidRxBytes(int uid)和 getUidTxbytes(int uid)包括了所有网络形式的流量,即包括WIFI和3g/2g.故需要监听WIFI变化,并记录WIFI过程中该uid应用使用的流量记录.

    public class WifiStateReceiver extends BroadcastReceiver implements ISusoConstants {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
                int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
                if (wifistate == WifiManager.WIFI_STATE_DISABLED) {//如果关闭
                    //结余本次wifi过程中 uid应用的 流量
                } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
                    //记录当前uid应用的流量.
                }
            }
        }
    }
    • 使用每日闹铃统计/开机时判断昨日统计是否完成.

    通过每日结余计算,得出该日APP的总流量以及WIFI流量占用和2g/3g的流量占用.

    • 获取流量代码
    PackageManager pm = context.getPackageManager();
        ApplicationInfo ai = pm.getApplicationInfo("com.51zaozao.traffic", PackageManager.GET_ACTIVITIES);
        long inTraffic = TrafficStats.getUidRxBytes(ai.uid);
        long outTraffic = TrafficStats.getUidTxBytes(ai.uid);

    拓展阅读

    分类: android solve


    本文转自wanqi博客园博客,原文链接:http://www.cnblogs.com/wanqieddy/p/4758020.html如需转载请自行联系原作者

    展开全文
  • cocos2.4.2发布到安卓资源路径更改***加粗样式*** 在2.4.2之前一直用的是下面的gradle模板,打一个2.4.2项目时发现有问题了,app一直黑屏,报错信息是需要文件解析失败之类的,而且,最重要是包体小了将近一半。 ...

    cocos2.4.2发布到安卓资源路径更改***加粗样式***
    2.4.2资源文件在assets
    2.3.2可以在subpackage
    在2.4.2之前一直用的是下面的gradle模板,打一个2.4.2项目时发现有问题了,app一直黑屏,报错信息是需要文件解析失败之类的,而且,最重要是包体小了将近一半。
    最后发现只需要把subpackage改成assets就可以了。

    展开全文
  • 安卓APP之加固技术

    千次阅读 2017-01-13 19:53:49
    在版本上线后为了防止APP版本被篡改,经常需要对App进行加固!这样可以防止APP被篡改和反编译。 那么问题来了怎样对App进行反编译呢!1.首先我们可以下载一个加固工具: 然后只需要把要加密的文件路径放进去...
  • cordova 安卓APP开发 版本更新解析

    千次阅读 2017-06-19 18:17:29
    安卓APP安装在data/data/包名/, 更新的包下载在data/data/包名/files/files/*.app 安装时会报解析错误,通过查询资料发现是没有权限,为了验证是否这个原因,下载了re文件管理器, 进入安装包所在的路径,查看安装包和...
  • 用HBuilder打包安卓app

    2019-04-29 11:44:40
    一、准备工作 1、先把vue项目运行起来,具体的... 2、安装好工具,cmd定位到相应到vue项目的相应路径如下图: 3、npm install 或cnpm install命令安装项目所需要的依赖cnpm(淘宝镜像,淘宝npm) 4、安装好依赖后...
  • 安卓app版本迭代中遇到的问题,希望和我情况相同的可以,可以借鉴一下我的,我遇到的也是问题中的一种,在版本更新中,发现版本不同需要下载,成功下载后安装说是解析包错误,我的原因是下载最新的apk安装包,和...
  • 对于安卓刚入门的人来说经常模仿项目是最快的进步方法,实战才能提升水平。模仿别人软件的时候我们需要有那个软件的图片,这样才可以... 一、进入软件下载市场下载一个安卓软件在电脑上,一般存放路径建议放在桌面...
  • aapt获取安卓APP包名

    2020-01-22 11:16:03
    1、打开cmd,进入android自带的aapt.ext所在路径 cd E:\Android\Sdk\build-tools\28.0.3 2、执行命令 aapt dump badging E:\ceshi\apk\ceshi.apk > D:/log.txt 3、打开文件 D:/log.txt,搜索 package: name= ...
  • Android应用安装后该应用所有相关文件路径有4种情况: system/app 系统自带的应用程序,无法删除。root后可以删除,注意可能造成系统崩溃,不过有的垃圾捆绑软件只能这么删除了 data/app 用户程序安装的目录,有删除...
  • 《第一行代码》里使用videoview,我想问的是视频资源放在什么路径里面?是手机存储根目录里还是SD...总不能用户使用你的app再拷一个视频资源吧?要不就是放在服务器里?又应该怎么实现?请教!最好有代码的DEMO。谢谢!
  • 安卓app开机自启动的几种方式

    万次阅读 2019-06-14 08:15:50
    此种方式,网上很多例程,但是要求设备root,应为要将apk放在system/app路径下,才能稳定有效。 2、设置为桌面启动器; 此种方式简单有效,首次使用需要设置为默认桌面启动器,问题是,有些设备禁止替换官方桌面。 ...
  • 安卓app测试之Monkey测试

    千次阅读 2019-06-29 11:14:12
    一、Monkey特点 1、运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行 2、需要知道packageName 3、目的:主要测试产品是否存在...带路径的包名> 1、通过adb logcat获取 adb shell “logcat | grep ST...
  • 1.在cmd进入安卓sdk的aapt应用的目录,cd C:\fyf\classes\Android\sdk\build-tools\25.0.2; 2. 执行命令 aapt dump badging xxx.apk,xxx.apk 为apk的全路径+apk名
  • 文章目录如何导入opencv4.3安卓例子导入下载安卓sdk下载ndk导入samples小提示配置ndk路径和opencvsdk路径ndk路径opencvsdk路径 如何导入opencv4.3安卓例子导入 下载安卓sdk 下载好OpenCV-android-sdk后,解压,我们...
  • 安卓选择本地文件时,需要返回文件路径,然后调用uni-app的上传接口去上传文件。首先是要选择文件,并返回文件路径 // chooseFile.js文件内容 function chooseFile(callback, acceptType) { //acceptType为你要查的...
  • 安卓常见文件路径

    千次阅读 2018-09-03 11:27:02
    安卓文件路径非常容易记混,现记录如下,方便以后查看 1.外部存储和内部存储的区别 Internal storage: 总是可用的 这里的文件默认只能被我们的app所访问。 当用户卸载app的时候,系统会把internal内该app相关...
  • Cocos Creator发布安卓app修改版本号

    千次阅读 2018-09-04 11:34:25
    Cocos creator 选择android版构建编译 打开build文件根据如下路径找到:proj.android-studio-->app-->build.gradle 打开build.gradle文件,找到如下代码,修改versionCode和versionName android ...
  • 修改了一个画图安卓app”Markers画图“中文版 先上图: ”Markers画图“源码路径:https://github.com/JumpingYang001/markers-cn ”Markers画图“apk路径:https://github.com/JumpingYang001/mark...
  • ionic 安卓打包app

    2020-07-26 16:31:05
    windows系统下ionic打包成安卓app 首先我们需要做一些准备工作 一、安装Java环境 可以去Java官网下载安装SDK:Java官网 安装完成后需要配置环境变量: 新建系统变量 变量名:CLASSPATH 变量值: .;%JAVA_HOME%\lib\...
  • 操作路径: Tools -> Fiddler Options -> HTTPS -> Export Fiddler Root Certificate to Desktop 如下图所示: 汉化的如下: 导出到桌面如下: 2.导入ca证书至手机 (1)传输证书至手机 可通过手机助手...
  • 近来同事离职,接手一个h5项目,发版在即,遇到了...此为H5项目,需嵌套在app中使用,并且需要调用ios/android原生拍照,安卓端为拍照后图片上传服务器,成功后返回路径到h5端 问题 在测试环境中,android的拍照...
  • 1.使用apktool反编译app:apktool d QQyinle_155.apk E:\apk\QQYinyue 2.打开AndroidManifest.xml manifest节点的package属性值是应用的包名:”com.estrongs.android.pop”> 查找android.intent.action....
  • 在安装appium环境的时候我们已经安装了SDK,里面就自带有元素定位的工具,位置在.../sdk/tools/uiautomatorviewer.bat,由于安装路径各有不同,如果实在找不到可以具体路径,可以在电脑中查找uiautomatorviewer.bat...
  • 目录功能介绍各模块详解界面设计地图切换定位天气显示地点搜索语音识别路径导航与语音播报结尾 功能介绍 项目总体包括6大模块:界面设计、定位、地图切换、当前城市天气、搜索地点、导航,具体实现了切换多种类型的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 472
精华内容 188
关键字:

安卓app路径