这一页列出密藏的权限、依赖库、系统备份设置和联网测试结果,帮你判断它是否如我们所说:不联网,不收集数据。这不是权威第三方评测,但每一项都写明了数据从哪来,以及你装好应用后怎样自己核对。
数据对应 Android 1.2.6.0(versionCode 1000260,包名 studio.src.safecamera)和 iOS 1.2.6(构建号 1260,Bundle ID src.studio.enclave)。其他版本的结果可能不同。
正式 APK 合并所有库之后声明的权限:
$ aapt2 dump badging secureCam-release.apk package: name='studio.src.safecamera' versionCode='1000260' versionName='1.2.6.0' uses-permission: name='android.permission.CAMERA' uses-permission: name='android.permission.RECORD_AUDIO' uses-permission: name='android.permission.USE_BIOMETRIC' uses-permission: name='android.permission.READ_EXTERNAL_STORAGE' maxSdkVersion='32' uses-permission: name='android.permission.READ_MEDIA_IMAGES' uses-permission: name='android.permission.READ_MEDIA_VIDEO' uses-permission: name='android.permission.READ_MEDIA_VISUAL_USER_SELECTED' uses-permission: name='studio.src.safecamera.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
没有 INTERNET,也没有 ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE 和 AD_ID。最后一行是 AndroidX 自动加入的签名级权限,只用来保护应用内部的广播。
怎么核对:从手机导出已安装的 APK,用 Android SDK 里的 aapt2 读取:
$ adb pull $(adb shell pm path studio.src.safecamera | grep base | cut -d: -f2) base.apk $ aapt2 dump badging base.apk | grep uses-permission
清单里 android:allowBackup 为 false,另用 android:dataExtractionRules 把全部数据排除在云备份和换机直传之外。系统备份和换机都不会带走保险库。换手机请用应用内的「完整加密备份」导出文件,它由你设定的密码保护,密码只留在设备上。
1.2.6 之前已经存进 Google 账号的旧备份不会自动删除,可以在 Google 账号的设备备份设置里删掉。
怎么核对:用上一节导出的 base.apk:
$ aapt2 dump xmltree --file AndroidManifest.xml base.apk | grep -E 'allowBackup|dataExtractionRules'
A: http://schemas.android.com/apk/res/android:allowBackup(0x01010280)=false
A: http://schemas.android.com/apk/res/android:dataExtractionRules(0x0101063e)=@0x7f140000
输出里 allowBackup 为 false,并有一行 dataExtractionRules。
应用直接声明的依赖库:
androidx.appcompat:appcompat:1.7.1 androidx.camera:camera-camera2:1.6.2 androidx.camera:camera-core:1.6.2 androidx.camera:camera-lifecycle:1.6.2 androidx.concurrent:concurrent-futures:1.3.0 androidx.constraintlayout:constraintlayout:2.2.1 androidx.documentfile:documentfile:1.1.0 androidx.exifinterface:exifinterface:1.4.2 androidx.legacy:legacy-support-v4:1.0.0 androidx.lifecycle:lifecycle-extensions:2.2.0 com.google.android.material:material:1.14.0 com.google.android.play:review:2.0.2
没有广告、统计、崩溃上报或支付库。com.google.android.play:review 只用来请 Play 商店弹出评分框,评分由 Google Play 处理;play-services-basement、play-services-tasks 和 core-common 是它带进来的。应用里还有我们自己写的原生代码,随应用一起编译。
releaseRuntimeClasspath 解析后的全部 91 个库androidx.activity:activity:1.8.0 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.8.1 androidx.annotation:annotation:1.8.1 androidx.appcompat:appcompat-resources:1.7.1 androidx.appcompat:appcompat:1.7.1 androidx.arch.core:core-common:2.2.0 androidx.arch.core:core-runtime:2.2.0 androidx.asynclayoutinflater:asynclayoutinflater:1.0.0 androidx.camera:camera-camera2-pipe:1.6.2 androidx.camera:camera-camera2:1.6.2 androidx.camera:camera-core:1.6.2 androidx.camera:camera-lifecycle:1.6.2 androidx.camera.featurecombinationquery:featurecombinationquery:1.6.2 androidx.cardview:cardview:1.0.0 androidx.collection:collection-jvm:1.4.2 androidx.collection:collection:1.4.2 androidx.concurrent:concurrent-futures-ktx:1.3.0 androidx.concurrent:concurrent-futures:1.3.0 androidx.constraintlayout:constraintlayout-core:1.1.1 androidx.constraintlayout:constraintlayout:2.2.1 androidx.coordinatorlayout:coordinatorlayout:1.1.0 androidx.core:core-backported-fixes:1.0.0 androidx.core:core-ktx:1.16.0 androidx.core:core-viewtree:1.0.0 androidx.core:core:1.16.0 androidx.cursoradapter:cursoradapter:1.0.0 androidx.customview:customview:1.2.0 androidx.documentfile:documentfile:1.1.0 androidx.drawerlayout:drawerlayout:1.1.1 androidx.dynamicanimation:dynamicanimation:1.1.0 androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.4.2 androidx.fragment:fragment:1.5.4 androidx.graphics:graphics-shapes-android:1.0.1 androidx.graphics:graphics-shapes:1.0.1 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-ui:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 androidx.legacy:legacy-support-v4:1.0.0 androidx.lifecycle:lifecycle-common:2.6.2 androidx.lifecycle:lifecycle-extensions:2.2.0 androidx.lifecycle:lifecycle-livedata-core:2.6.2 androidx.lifecycle:lifecycle-livedata:2.6.2 androidx.lifecycle:lifecycle-process:2.6.2 androidx.lifecycle:lifecycle-runtime:2.6.2 androidx.lifecycle:lifecycle-service:2.6.2 androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 androidx.lifecycle:lifecycle-viewmodel:2.6.2 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 androidx.media:media:1.0.0 androidx.print:print:1.0.0 androidx.profileinstaller:profileinstaller:1.4.0 androidx.recyclerview:recyclerview:1.2.1 androidx.resourceinspection:resourceinspection-annotation:1.0.1 androidx.savedstate:savedstate:1.2.1 androidx.slidingpanelayout:slidingpanelayout:1.0.0 androidx.startup:startup-runtime:1.1.1 androidx.swiperefreshlayout:swiperefreshlayout:1.0.0 androidx.tracing:tracing-android:1.3.0 androidx.tracing:tracing-ktx:1.3.0 androidx.tracing:tracing:1.3.0 androidx.transition:transition:1.5.0 androidx.vectordrawable:vectordrawable-animated:1.1.0 androidx.vectordrawable:vectordrawable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.1 androidx.viewpager:viewpager:1.0.0 androidx.viewpager2:viewpager2:1.0.0 com.google.android.gms:play-services-basement:18.4.0 com.google.android.gms:play-services-tasks:18.2.0 com.google.android.material:material:1.14.0 com.google.android.play:core-common:2.0.4 com.google.android.play:review:2.0.2 com.google.auto.value:auto-value-annotations:1.6.3 com.google.dagger:dagger:2.59 com.google.errorprone:error_prone_annotations:2.15.0 com.google.guava:listenablefuture:1.0 jakarta.inject:jakarta.inject-api:2.0.1 javax.inject:javax.inject:1 org.jetbrains:annotations:23.0.0 org.jetbrains.kotlin:kotlin-bom:1.8.22 org.jetbrains.kotlin:kotlin-stdlib:2.2.10 org.jetbrains.kotlinx:atomicfu-jvm:0.28.0 org.jetbrains.kotlinx:atomicfu:0.28.0 org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0 org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0 org.jspecify:jspecify:1.0.0
怎么核对:正式包经过代码压缩和混淆,依赖库不容易从安装包里直接看出来。应用实际有没有联网,可以用下面的「联网测试:Android」检查。
Info.plist 里只有四条权限说明:相机、麦克风、Face ID,以及向「照片」添加照片(只写不读)。没有相册读取、定位、通讯录、蓝牙、后台模式,也没有 App Transport Security 例外。entitlements 为空:没有 iCloud、推送、App Group 或关联域名。应用不带任何扩展。
怎么核对:「设置 → 隐私与安全性 → 照片 → 密藏」只有「仅添加照片」和「无」两个选项。「设置 → App → 密藏」里,除了用过的相机、麦克风、Face ID 和照片,没有别的权限。
没有 Swift Package、CocoaPods 或 Carthage 依赖。应用只链接系统框架、libc++,以及随应用编译的自有静态库 libClientLib_IOS.a(已并入二进制,不单独出现)。下面是 1.2.6 正式构建的 otool -L 输出,每一项都在 /System/Library/Frameworks 或 /usr/lib 下。
$ otool -L enclave.app/enclave /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 2200.27.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 5027.0.69) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1359.0.0) /System/Library/Frameworks/AVFAudio.framework/AVFAudio (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/AVFoundation.framework/AVFoundation (compatibility version 1.0.0, current version 2.0.0) /System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (compatibility version 1.0.0, current version 1000.0.0) /System/Library/Frameworks/Combine.framework/Combine (compatibility version 1.0.0, current version 3023.0.0) /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 5027.0.69) /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 2050.0.0) /System/Library/Frameworks/CoreImage.framework/CoreImage (compatibility version 1.0.0, current version 7.0.0) /System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 3350.77.1) /System/Library/Frameworks/CoreVideo.framework/CoreVideo (compatibility version 1.2.0, current version 758.27.0) /System/Library/Frameworks/CryptoKit.framework/CryptoKit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/ImageIO.framework/ImageIO (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication (compatibility version 1.0.0, current version 2319.12.210) /System/Library/Frameworks/Metal.framework/Metal (compatibility version 1.0.0, current version 382.5.3, weak) /System/Library/Frameworks/Photos.framework/Photos (compatibility version 1.0.0, current version 912.20.123) /System/Library/Frameworks/PhotosUI.framework/PhotosUI (compatibility version 1.0.0, current version 912.20.123) /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1223.6.12) /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 62460.2.3) /System/Library/Frameworks/SwiftUI.framework/SwiftUI (compatibility version 1.0.0, current version 8.0.85) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 9127.0.85) /System/Library/Frameworks/VideoToolbox.framework/VideoToolbox (compatibility version 1.0.0, current version 3350.77.1) /usr/lib/swift/libswiftAVFoundation.dylib (compatibility version 1.0.0, current version 2450.77.1) /usr/lib/swift/libswiftCore.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/swift/libswiftCoreAudio.dylib (compatibility version 1.0.0, current version 482.102.0, weak) /usr/lib/swift/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 120.100.0) /usr/lib/swift/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 3.0.0, weak) /usr/lib/swift/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 57.0.0, weak) /usr/lib/swift/libswiftCoreMIDI.dylib (compatibility version 1.0.0, current version 6.0.0, weak) /usr/lib/swift/libswiftDarwin.dylib (compatibility version 1.0.0, current version 428.0.10, weak) /usr/lib/swift/libswiftDispatch.dylib (compatibility version 1.0.0, current version 1605.0.2) /usr/lib/swift/libswiftMetal.dylib (compatibility version 1.0.0, current version 382.5.3, weak) /usr/lib/swift/libswiftOSLog.dylib (compatibility version 1.0.0, current version 10.0.0, weak) /usr/lib/swift/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 973.1.0) /usr/lib/swift/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 5.0.0, weak) /usr/lib/swift/libswiftSpatial.dylib (compatibility version 1.0.0, current version 1.0.0, weak) /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib (compatibility version 1.0.0, current version 919.0.1) /usr/lib/swift/libswiftXPC.dylib (compatibility version 1.0.0, current version 167.0.2, weak) /usr/lib/swift/libswift_Concurrency.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/swift/libswiftos.dylib (compatibility version 1.0.0, current version 1090.0.0) /usr/lib/swift/libswiftsimd.dylib (compatibility version 1.0.0, current version 25.0.0, weak) /usr/lib/swift/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/swift/libswiftCoreMedia.dylib (compatibility version 1.0.0, current version 3350.77.1)
怎么核对:App Store 版本的安装包普通用户拿不到,这一项没法自己核对。应用实际有没有联网,可以用下面的「联网测试:iPhone」检查。
保险库目录和伪装功能的画布都标记了 NSURLIsExcludedFromBackupKey,不进入 iCloud 备份和电脑备份。设置仍会备份,所以用系统备份恢复后,设置会回来,保险库不会。换手机请用应用内的「完整加密备份」导出文件。1.2.6 之前做的系统备份里可能仍有旧的保险库内容。
下面两处是我们在商店后台填写的申报,可以和本页的数据对照。iOS 工程里没有 PrivacyInfo.xcprivacy。
方法:用 iOS 自带的「App 隐私报告」记录应用的网络活动。
networkActivity。$ grep src.studio.enclave App_Privacy_Report_v4_*.ndjson > enclave.ndjson $ grep -o '"type":"[a-zA-Z]*"' enclave.ndjson | sort | uniq -c 10 "type":"access"
我们的结果:2026 年 10 月 24 日,iPhone 15 Pro,iOS 27.0.1,密藏 1.2.6。报告覆盖当地时间约 12:18 到 15:57。密藏有 10 条访问记录(相机和麦克风),0 条网络记录。同一份报告里另有 6 个应用共 22 条网络记录,说明这段时间报告在正常记录网络活动。
照片选择器这类由系统代为完成的操作,记在系统名下。
方法:用 adb 查看应用进程的网络权限组、socket 和流量统计。打开 USB 调试,让密藏停在前台,运行下面的命令。把 10041 换成你设备上显示的 userId。
$ adb shell dumpsys package studio.src.safecamera | grep -E 'userId|versionName'
userId=10041
versionName=1.2.6.0
$ adb shell cat /proc/$(adb shell pidof studio.src.safecamera)/status | grep Groups
Groups: 9997 20041 50041
$ adb shell cat /proc/net/tcp /proc/net/tcp6 /proc/net/udp /proc/net/udp6 | awk '$8==10041' | wc -l
0
$ adb shell dumpsys netstats detail | grep 'uid=10041'
uid=10041 set=1
INTERNET 权限的应用,进程会带 3003(inet)组。这里没有。netstats 里没有该 uid 的流量记录。匹配到的那一行来自 mUidCounterSetMap,只标记应用是否在前台。不用电脑:在系统设置的应用详情里看密藏的流量使用(各品牌叫法不同,如「移动数据」「流量使用情况」),应为 0。
我们的结果:2026 年 10 月 24 日,Samsung Galaxy A03s(SM-A037W),Android 13,当天新装的 1.2.6.0。在应用里拍了 3 张照片、录了一段 5 秒视频后运行上面的命令,输出如上。应用是当天装的,所以 netstats 覆盖了它全部的使用。
对这一页有疑问,或者你核对的结果和这里不一致:support@src.studio