Android Studio:使用本机 C++ 代码发布签名的 Bundle 将永远运行
Posted
技术标签:
【中文标题】Android Studio:使用本机 C++ 代码发布签名的 Bundle 将永远运行【英文标题】:Android Studio: Releasing signed Bundle with native c++ Code just runs forever 【发布时间】:2021-02-28 15:40:42 【问题描述】:我有一个想要发布的 android 应用。我最近添加了一个本地 c++ 库,并且在设备上进行了测试,效果很好。但是,当我想发布一个新版本时,我遇到了以下问题: 生成签名包将永远运行而不会出现任何错误消息。这是控制台输出:
> Task :app:externalNativeBuildRelease
Build native-lib_armeabi-v7a
ninja: Entering directory `/Users/haenles/Development/private/myapp/app/.cxx/cmake/release/armeabi-v7a'
> Task :app:externalNativeBuildRelease
[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o
[2/2] Linking CXX shared library ../../../../build/intermediates/cmake/release/obj/armeabi-v7a/libnative-lib.so
Build native-lib_arm64-v8a
ninja: Entering directory `/Users/haenles/Development/private/myapp/app/.cxx/cmake/release/arm64-v8a'
这是“正在进行的”构建的屏幕截图:
我的 build.gradle 看起来像这样:
android
compileSdkVersion 30
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
kotlinOptions
jvmTarget = "1.8"
defaultConfig
applicationId "com.my.packagename"
minSdkVersion 21
targetSdkVersion 30
versionCode 23
versionName "2.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "en", "de", "pt"
buildTypes
release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
debug
minifyEnabled false
shrinkResources false
viewBinding
enabled = true
testOptions
unitTests.returnDefaultValues = true
externalNativeBuild
cmake
path "CMakeLists.txt"
CmakeLists.txt 如下所示:
cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp )
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
$log-lib )
我的项目设置屏幕截图:
我正在使用最新的 Android Studio 版本、最新的 gradle-wrapper 和 gradle 版本。我已经尝试过“使缓存无效并重新启动”和“刷新链接的 c++ 项目”。我在 Mac Os Catalina 上运行 Android Studio。 有谁知道这里可能出了什么问题?仅当我想发布已签名的捆绑包时才会发生这种情况。构建到设备上效果很好。
在我看来,忍者似乎由于某种原因无法构建 arm64-v8a。我可能需要额外的配置吗?
干杯, 症状
【问题讨论】:
【参考方案1】:我通过将我的 c++ 库更改为 c 库并使用 make 解决了这个问题。不知道是什么问题,但现在可以了。
【讨论】:
以上是关于Android Studio:使用本机 C++ 代码发布签名的 Bundle 将永远运行的主要内容,如果未能解决你的问题,请参考以下文章
调试不适用于 Android Studio 的 C++/本机库模块(使用 Cmake)
_itoa_s 函数在 Android Studio 本机 C++ 上显示错误
针对 Visual Studio 2012 本机 C++ 测试从命令行运行 mstest
如何在 Android Studio 中禁用 android 本机调试器