相关疑难解决方法(0)

使用Android Studio调试C++库

我正在开发一个Android项目,该项目使用一个Java类库作为包装器C++.C++库是一个公司内部库,我们可以访问它的源代码,但在Android项目中它只是动态链接的,所以它只能以头文件(.h)和共享对象(.so)的形式使用.有权访问库源代码,是否可以向Android Studio指定源代码的路径,以便我可以使用调试器进入库内部?

调试器工作,我可以进入Java_clory_engine_sdk_CloryNative_nativeInit函数内部,但我还想进一步调试对应于Clory::Engine该类的库,正如我所提到的,它是一个我们有源代码访问的内部库.

c_clory

例如,Clory::Engine::instance是库的一部分,我想向Android Studio指定CloryEngine.cpp文件的位置,以便我可以Clory::Engine::instance使用调试器进入内部,从而调试此静态成员函数.

我使用的是Android Studio 3.1.4.

这可能吗?

编辑:

clory-sdk.gradle文件指定CMakeLists.txt配置C++层的文件.

externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我使用的是使用Clory SDK的内部应用程序.在app.gradle我使用的文件内:

dependencies {
...
    compile project(':clory-sdk-core')
    compile project(':clory-sdk')
...
}
Run Code Online (Sandbox Code Playgroud)

所以我不认为我们在项目中使用aars app.gradle.该aars的运到客户端,但我们使用app.gradle的项目在这之前测试我们的小SDK功能.JNI层位于clory-sdk-core项目内部.

编辑2:

这是CMakeLists.txt处理JNI层的:

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_BUILD_TYPE …
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface android android-studio android-studio-3.0

24
推荐指数
2
解决办法
2081
查看次数

不剥离调试符号ndk-build

看起来像ndk-build在从obj复制到lib文件夹时调试符号.有没有办法告诉ndk-build不要剥离调试符号?

android-ndk

7
推荐指数
1
解决办法
4247
查看次数

android studio 2.2压缩所有内置apk中的文件

更新android studio和插件后,新建的apk在启动时遇到令人费解的本机问题,我发现armeabi/armeabi-v7a所以文件压缩从200KB到10KB.虽然旧的android工作室无法做到这一点.

Android Studio版本:2.2(Windows 64位)Gradle版本:2.14.1 Android插件版本:2.2.0

我阅读了Gradle Release Notes的Android插件:

通过采用新的默认打包管道来改进构建性能,该管道在一个任务中处理压缩,签名和zipaligning.您可以通过将android.useOldPackaging = true添加到gradle.properties文件来恢复使用旧的打包工具.使用新的打包工具时,zipalignDebug任务不可用.但是,您可以通过调用createZipAlignTask(String taskName,File inputFile,File outputFile)方法自己创建一个.

我使用android.useOldPackaging = true,但它不起作用,我发现优化发生在stripDebugSymbol中:

原始库:

+ --- armeabi | libsecuritysdk-3.1.27.so 210KB | + --- armeabi-v7a | libsecuritysdk-3.1.27.so 233KB | --- x86 libsecuritysdk-3.1.27.so 195KB

中间体和apk:YourProject\example\build\intermediates\transforms\stripDebugSymbol\debug\folders\2000\1f\main + --- armeabi | libsecuritysdk-3.1.27.so 9.06KB | + --- armeabi-v7a | libsecuritysdk-3.1.27.so 9.07KB | --- x86 libsecuritysdk-3.1.27.so 9.06KB

我尝试'assembleDebug --exclude-task transformNative_libsWithStripDebugSymbolForDebug',这将导致apk中没有.

那么如何防止gradle插件优化呢?

android

6
推荐指数
2
解决办法
2716
查看次数

如何在 AAR 文件中将 ndk-stack 与共享库一起使用

我在 Android 应用程序中使用共享对象库。这些共享对象库在.aar文件中。

图书馆之一正在崩溃。为了检查崩溃日志和确切的行号。我正在使用ndk-stack

的用法ndk-stack

$ adb logcat |  ndk-stack -sym <Path to  your shared libraries>
Run Code Online (Sandbox Code Playgroud)

现在如何在 AAR 文件中获取共享库的路径?

android android-ndk android-studio

3
推荐指数
1
解决办法
844
查看次数