Bugly的使用

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/
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文件而没有编译环境,可以使用在线工具:

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
                        }
                    }
                }
            }
        }
    }
}
相关推荐
Kapaseker1 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴1 小时前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭11 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab12 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe18 小时前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农1 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少1 天前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker1 天前
一杯美式搞定 Kotlin 空安全
android·kotlin
三少爷的鞋1 天前
Android 协程时代,Handler 应该退休了吗?
android
火柴就是我2 天前
让我们实现一个更好看的内部阴影按钮
android·flutter