You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改经Apktool反编译的Android APK数据存储位置至可访问路径

把APK数据存到公共内部存储的修改要点

要把APK的存储路径从data/data这类私有目录改成/storage/emulated/0,主要得改这几个地方:

  • 代码逻辑文件(.smali)
    找反编译后smali目录里对应业务逻辑的文件,比如处理数据存储的Activity或工具类smali文件。把里面调用私有存储的方法,比如getFilesDir()、getCacheDir()、getDatabasePath()这类,换成获取公共存储的方法:

    • 直接用Environment.getExternalStorageDirectory()就能拿到/storage/emulated/0根目录
    • 也可以用getExternalFilesDir(null),对应/storage/emulated/0/Android/data/你的包名/files,这个目录不用额外权限也能访问,更稳妥
      改的时候注意smali语法,别写错指令。
  • AndroidManifest.xml
    必须加存储权限:

    <!-- Android 10及以下需要读写权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- Android 11+ 要访问公共根目录的话,得加这个权限 -->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    

    要是目标是Android 10或以上,还要在<application>标签里加这句:

    android:requestLegacyExternalStorage="true"
    

    不然旧的存储API会失效。

  • 硬编码路径的配置文件
    有些应用会把路径写在res/values/strings.xml或者assets下的配置文件里,直接搜data/data或者私有路径关键词,把对应的值改成/storage/emulated/0相关的路径就行。

最后提醒:改完重新编译APK后,必须签名才能安装;Android 11以上用MANAGE_EXTERNAL_STORAGE权限的话,得引导用户去系统设置里手动开权限。

内容的提问来源于stack exchange,提问作者M KK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:09:56