bugly已经改版了,免费的基础版本,速度很慢,勉强够用,这里大概介绍一下。
1.Android使用bugly
可以参考官网

1.上传符号表
参考bugly官网
上传SO符号表文件
bash
cd 上传符号表工具文件夹【才能进下下一步操作】
bash
java -jar buglyqq-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.0 -platform Android -inputSymbol /Users/lilyxie/Downloads/upload_target/obj/arm64-v8a/libbugly_dumper.so
注意事项: 找到正确的SO符号表文件位置,
暂时通过第八条中的方法找到SO符号表文件
在Android Studio中没有找到ndk和cmake文件夹的情况下,你可以通过以下几种方式查找so文件的符号表:
1. 查找已安装的NDK路径
首先检查你的项目是否配置了NDK:
arduino
// 在app模块的build.gradle中查看
android {
ndkVersion "21.4.7075529" // 如果有指定版本
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
2. 通过Android Studio查找NDK路径
-
方法一:File → Project Structure → SDK Location → Android NDK location
-
方法二:查看本地文件系统中的默认NDK安装路径:
- Windows:
%USERPROFILE%\AppData\Local\Android\Sdk\ndk
- Mac:
~/Library/Android/sdk/ndk/
- Linux:
~/Android/Sdk/ndk/
- Windows:
3. 使用adb命令获取设备上的so文件
bash
# 查看应用安装目录下的so文件
adb shell ls -la /data/app/你的应用包名*/lib/arm64/
# 拉取so文件到本地
adb pull /data/app/你的应用包名*/lib/arm64/ libs/
4. 使用readelf查看符号表
bash
# 如果有NDK工具链
readelf -s your_library.so
# 或者使用NDK中的readelf
${ANDROID_NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-readelf -s your_library.so
5. 使用objdump查看符号表
bash
# 使用NDK中的objdump
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-objdump -T your_library.so
6. 使用nm工具(如果可用)
nm -D your_library.so
7. 在线符号表解析工具
如果只有so文件而没有编译环境,可以使用在线工具:
- retdec.com/decompilati...
- 或者使用IDA Pro、Ghidra等反编译工具
8. 从编译产物中查找
检查项目的以下目录:
app/build/intermediates/merged_native_libs/
app/build/intermediates/stripped_native_libs/
app/build/intermediates/transforms/mergeJniLibs/
9. 配置NDK的替代方案
如果确实没有安装NDK,可以通过以下方式安装:
bash
# 使用sdkmanager安装
sdkmanager --install "ndk;21.4.7075529"
# 或在Android Studio中安装
# Tools → SDK Manager → SDK Tools → 勾选NDK
2.上传mapping.txt
bash
cd 上传符号表工具文件夹【才能进下下一步操作】
bash
java -jar buglyqq-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.1 -buildNo 1 -platform Android -inputMapping /Users/temp/app/build/outputs/mapping/r8/release/mapping.txt
产生
mapping.txt
需要在app/build.gradle
设置,才能生产mapping.txt文件
arduino
android {
buildTypes {
release {
minifyEnabled true // 必须为true才会生成mapping
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// 自定义mapping文件输出路径
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputDir = new File("${project.buildDir.absolutePath}/mapping/${variant.name}")
variant.assembleProvider.get().doLast {
copy {
from variant.mappingFile
into outputDir
}
}
}
}
}
}
}