-
-
Save iflove/617fd010dccce2b5acea2bcc74815d32 to your computer and use it in GitHub Desktop.
Android 日常记录 |
iflove
commented
Mar 31, 2021
traces 分析
----- pid 716 at 2021-03-25 15:17:17 -----
Cmd line: system_server
Build fingerprint: 'Haitianxiong/rk3288/rk3288:7.1.2/NHG47K:userdebug/test-keys'
ABI: 'arm'
Build type: optimized
Zygote loaded classes=4377 post zygote classes=3123
Intern table: 43040 strong; 3798 weak
JNI: CheckJNI is off; globals=1324 (plus 187 weak)
Libraries: /system/lib/libandroid.so /system/lib/libandroid_servers.so /system/lib/libcompiler_rt.so /system/lib/libjavacrypto.so /system/lib/libjnigraphics.so /system/lib/libmedia_jni.so /system/lib/libsoundpool.so /system/lib/libwebviewchromium_loader.so /system/lib/libwifi-service.so libjavacore.so libopenjdk.so (11)
Heap: 32% free, 7MB/11MB; 123377 objects
Zygote loaded classes:加载class状况
Intern table: intern和字符串字面量常量统计
JNI:CheckJNI调试工具状态 ,root 设备 setprop dalvik.vm.checkjni true 开启,stop start
Libraries:加载so列表
虚拟机堆会动态扩展,11MB代表堆扩展到的大小,7MB代表在堆上使用的大小,32%自然就是使用的大小, 123377就是创建的对象
Total time spent in GC: 1.788s #在GC中花费的总时间
Mean GC size throughput: 45MB/s #平均GC 流量速度大小
Mean GC object throughput: 653080 objects/s #平均GC 对象流量大小
Total number of allocations 1291143 #进程创建到现在一共创建的对象数
Total bytes allocated 89MB
Total bytes freed 82MB
Free memory 3MB
Free memory until GC 3MB
Free memory until OOME 504MB
Total memory 11MB
Max memory 512MB #还能扩展多少内存达到
Zygote space size 1644KB
Total mutator paused time: 52.998ms
Total time waiting for GC to complete: 136.791us
Total GC count: 45
Total GC time: 1.788s
Total blocking GC count: 1
Total blocking GC time: 23.776ms
keytool
修改签名文件别名,能正常覆盖安装apk
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
andoid build.gradle 例子 ,学习网上开源项目,以及平时项目中用过的
android {
//定义ndk 版本,巧用环境变量和gradle.properties文件
ndkVersion = System.getenv("JITPACK_NDK_VERSION") ?: project.properties.ndkVersion
//默认配置
defaultConfig {
//清单文件占位符
manifestPlaceholders.TERMUX_PACKAGE_NAME = "com.termux"
//指定 ABI,打包apk,相关ABI库放入其中
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your app.
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
'arm64-v8a'
}
//关联到您的原生库. 指定可选配置:只能为 CMake 或 ndk-build 指定可选参数和标记。
externalNativeBuild {
//ndkBuild块; 二选一
ndkBuild {
cFlags "-std=c11"
}
//CMake块;二选一
cmake {
// Passes optional arguments to CMake.
arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang"
// Sets a flag to enable format macro constants for the C compiler.
cFlags "-D__STDC_FORMAT_MACROS"
// Sets optional flags for the C++ compiler.
cppFlags "-fexceptions", "-frtti"
}
}
}
//打包配置
packagingOptions {
//so 文件不压缩
doNotStrip "**/*.so"
}
//关联到您的原生库. 使用 cmake 或 ndkBuild 块对其进行配置:
externalNativeBuild {
//ndkBuild块; 二选一
ndkBuild {
path "src/main/cpp/Android.mk"
}
//CMake块;二选一
cmake {
path "CMakeLists.txt"
}
}
//构建多个APK 不限篇幅请参考官方(https://developer.android.com/studio/build/configure-apk-splits)
splits {
abi {
//是否多个apk
enable gradle.startParameter.taskNames.any { it.contains("Debug") }
reset ()
include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
//是否需要生成通用 APK
universalApk true
}
}
//签名文件配置
signingConfigs {
debug {
storeFile file('dev_keystore.jks')
keyAlias 'alias'
storePassword 'xrj45yWGLbsO7W0v'
keyPassword 'xrj45yWGLbsO7W0v'
}
}
lintOptions {
disable 'ProtectedPermissions'
}
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
task versionName {
doLast {
print android.defaultConfig.versionName
}
}
//在 Project 配置结束后调用
afterEvaluate {
android.applicationVariants.all { variant ->
variant.javaCompileProvider.get().dependsOn(downloadBootstraps)
}
}
java 命令
jar xvf test.jar
jar cvf filename.jar a.class b.class: 压缩指定文件;
jar cvf weibosdkcore.jar *: 全部压缩;
反编译
FDex2
FDex2_1.1.apk
链接:https://pan.baidu.com/s/1End0Ki1FPCSSsHfXn6Etqw
提取码:u9rx
--来自百度网盘超级会员V1的分享
VirtualXposed
VirtualXposed:无需root手机即可使用Xposed框架
脱壳
Android9.0 不支持!
首先,将VirtualXposed、FDex2和需要脱壳的应用都安装到手机上。然后,启动VirtualXposed,并在VirtualXposed中安装FDex2。
然后,在VirtualXposed中选择模块管理激活FDex2。
在VirtualXposed中安装要脱壳的应用,具体和上面的步骤一样。然后,启动VirtualXposed中的FDex2,并配置要脱壳的应用。
在VirtualXposed中运行要脱壳的应用,脱壳后的dex文件如下图:
然后,使用adb pull命令将脱壳后的dex文件导出到电脑。
GDA
Luyten
Java 反编译工具Luyten
classyshark
ClassyShark - APK 分析利器
java -jar /Users/system/Downloads/ClassyShark.jar
smalidea
smalidea is a smali language plugin for IntelliJ IDEA/Android Studio
idea 下调试smali的插件工具