Android应用无法在发布时使用ndk

时间:2017-05-23 08:48:52

标签: android c android-ndk java-native-interface

我在发布模式下编译我的应用程序时遇到问题。这是一个棘手的错误,因为我正在使用NDK为我的应用程序使用C音频编解码器。

它在调试模式下工作正常,我没有问题,但在发布它根本不想编译并签署APK如果我删除我的应用程序的C部分它的工作。

我真的不知道我做错了什么,它似乎来自Makefile和我的C对象的编译。

感谢您的帮助!任何答案都可能有所帮助!告诉我你是否需要其他任何东西。

这是我的代码的错误和部分内容。

  

忍者:构建已停止:子命令失败   :app:externalNativeBuildRelease FAILED   FAILURE:构建因异常而失败。    什么地方出了错:   任务':app:externalNativeBuildRelease'的执行失败。   构建命令失败。     执行进程时出错/Users/lg/Library/Android/sdk/cmake/3.6.3155560/bin/cmake with arguments {--build /Users/lg/projects/remi-android-app/app/.externalNativeBuild/cmake/ release / armeabi --target codec-lib}     [1/2]构建C对象CMakeFiles / codec-lib.dir / g722_codec.c.o     FAILED:/ Users / lg / Library / Android / sdk / ndk-bundle / toolchains / llvm / prebuilt / darwin-x86_64 / bin / clang --target = armv5te-none-linux-androideabi --gcc-toolchain = / Users / lg / Library / Android / sdk / ndk-bundle / toolchains / arm-linux-androideabi-4.9 / prebuilt / darwin-x86_64 --sysroot = / Users / lg / Library / Android / sdk / ndk-bundle / platforms / android- 18 / arch-arm -Dcodec_lib_EXPORTS -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march = armv5te -mtune = xscale -msoft-float -fno-integrated-as - mthumb -Wa, - noexecstack -Wformat -Werror = format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march = armv5te -mtune = xscale -msoft- float -fno-integrated-as -mthumb -Wa, - noexecstack -Wformat -Werror = format-security -Os -DNDEBUG -Os -DNDEBUG -fPIC -MD -MT CMakeFiles / codec-lib.dir / g722_codec.co -MF CMakeFiles / codec-lib.dir / g722_codec.cod -o CMakeFiles / codec-lib.dir / g722_codec.co -c / Users / lg / projects / remi-android-应用程序/应用程序/ SRC /主/ JNI / g722_codec.c     致命错误:后端错误:无法选择:0x7f7f640d3170:i32 = ARMISD :: SSAT 0x7f7f640bf390,常数:i32< 15>       0x7f7f640bf390:i32 = shl 0x7f7f640be750,常数:i32< 2>         0x7f7f640be750:i32,ch = load%26> 0x7f7f618dfa50,0x7f7f640d35d0,undef:i32           0x7f7f640d35d0:i32 = add 0x7f7f641024a0,Constant:i32< 156>             0x7f7f641024a0:i32,ch = CopyFromReg 0x7f7f631625f0,注册:i32%vreg24               0x7f7f64102d60:i32 =注册%vreg24             0x7f7f640bef30:i32 =常数< 156>           0x7f7f618dff20:i32 = undef         0x7f7f6401bbb0:i32 =常数< 2>       0x7f7f64102ba0:i32 =常数< 15>     在功能:block4l_d     clang:错误:clang frontend命令失败,退出代码为70(使用-v查看调用)     Android clang版本3.8.275480(基于LLVM 3.8.275480)     目标:armv5te-none-linux-android     线程模型:posix     InstalledDir:/ Users / lg / Library / Android / sdk / ndk-bundle / toolchains / llvm / prebuilt / darwin-x86_64 / bin     clang:注意:诊断消息:请向http://llvm.org/bugs/提交错误报告,并包括崩溃回溯,预处理源和关联的运行脚本。     clang:注意:诊断消息:     请将以下文件附在BUG报告中:     预处理的源和相关的运行脚本位于:     clang:注意:诊断消息:/var/folders/07/4hq2_z0n7215k761dp4v49t00000gn/T/g722_codec-38a769.c     clang:注意:诊断消息:/var/folders/07/4hq2_z0n7215k761dp4v49t00000gn/T/g722_codec-38a769.sh     clang:注意:诊断消息:     忍者:构建停止:子命令失败。

     

的build.gradle

apply plugin: 'io.fabric'

buildscript {
  dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
  }

  repositories {
    maven { url 'https://maven.fabric.io/public' }
  }
}

android {
   signingConfigs {
       configRelease {
           keyAlias 'key0'
           keyPassword '******'
           storeFile file('/Users/lg/projects/app/keys/key.jks')
        storePassword '******'
       }
   }
   compileSdkVersion 25
   buildToolsVersion "25.0.2"
   defaultConfig {
    applicationId "com.app.urbanhello"
    minSdkVersion 18
    targetSdkVersion 25
    versionCode 2
    versionName "2.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
    renderscriptSupportModeEnabled true
    ndk {
        abiFilters "armeabi", "armeabi-v7a", "x86"
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        jniDebuggable true
        signingConfig signingConfigs.configRelease
    }
    debug {
        minifyEnabled false
        versionNameSuffix " Debug"
        jniDebuggable true
    }
}

externalNativeBuild {
    cmake {
        path 'src/main/jni/CMakeLists.txt'
    }
}

CMakeList.txt

  

cmake_minimum_required(VERSION 3.4.0)
  set(CMAKE_CXX_FLAGS“$ {CMAKE_C_FLAGS} -std = gnu ++ 11”)   
add_library(codec-lib
               SHARED
               codeclibwrapper.c
               g722_codec.c)   
find_library(编解码器-LIB                 日志)   
target_link_libraries(编解码器-LIB                         安卓
                        登录
                        $ {log-lib})

App Archi

0 个答案:

没有答案