为了使用Macrobenchmark,我们需要添加<profileable>到 AndroidManifest.
<profileable
android:shell="true"
tools:targetApi="q" />
Run Code Online (Sandbox Code Playgroud)
包含<profileable>在生产版本中安全吗?
我正在尝试为我的应用程序生成基线配置文件,但我看到以下错误:
:benchmark:connectedReleaseAndroidTest
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_osx_aarch_64.jnilib
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_aarch_64.jnilib
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative.jnilib
Shell command failed (255): appops set androidx.test.services MANAGE_EXTERNAL_STORAGE allow
No UID for androidx.test.services in user 0
Run Code Online (Sandbox Code Playgroud)
基线测试确实在设备上运行,但无法成功从设备复制输出文件:
started: startup(com.doximity.benchmark.BaselineProfileGenerator)
Moving /storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof.txt to /sdcard/Android/media/com.doximity.benchmark/additional_test_output/BaselineProfileGenerator_startup-baseline-prof.txt
Pull Baseline Profile with: `adb pull "/storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt" .`
Moving /storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt to /sdcard/Android/media/com.doximity.benchmark/additional_test_output/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt
finished: startup(com.doximity.benchmark.BaselineProfileGenerator)
Run Code Online (Sandbox Code Playgroud)
此基线配置文件测试之前在更新 Android 目标 SDK 和 AGP 版本之前有效:
config.target_sdk_version = 34 // was 31
config.compile_sdk_version = 34 // was 33
versions.android_gradle_plugin = '8.1.1' // was 7.3.1
versions.kotlin = '1.9.0' // was 1.8.10
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的设备和模拟器,并看到了相同的行为。
我的应用程序有多个风味维度,因此我想为每个变体创建baseline-prof.txt(例如fooBar)。但是,当我将文件放入其中时,/app/src/fooBar在发布版本期间不会拾取该文件。唯一一次拾取它是在放入时/app/src/main(按照文档的建议)。
baseline-prof.txt如何配置才能为每个变体存储不同的内容?
performance android android-gradle-plugin macrobenchmark baseline-profile