如何改变ndk android

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何改变ndk android相关的知识,希望对你有一定的参考价值。

工具/原料

win8 x64
android-ndk-r10d-windows-x86_64.exe
com.android.ide.eclipse.ndk_23.0.2.1259578.jar
ubuntukylin-14.04-desktop-amd64
android-ndk-r10c-linux-x86_64.bin
前期准备

1

环境搭建的问题,建议大家最好看视频,虽然理论上android环境搭建很简单,但是存在了太多的陷阱,由于陷阱太多,细节太多帖子难免有些会漏掉一些类容,所以建议看视频,视频讲解的更全面一下谢谢!
2
android sdk环境搭建:
3
下载android ndk,
4
下eclipse支持ndk插件,
Windows下搭建

将下载下来的“android-ndk-r10c-windows-x86_64.exe”放到
“D:\\Android“目录下面,然后双击安装,便会自动解压到"D:\\Android"
下面
将中“comandroid.ide.eclipse.ndk_23.0.2.1259578.jar”下载到"D:\\Android\\adt-bundle-windows-x86_64-20140702\\eclipse\\plugins\\com.android.ide.eclipse.ndk_23.0.2.1259578.jar"

① 启动"D:\\Android\\adt-bundle-windows-x86_64-20140702\\eclipse\\eclipse.exe"
② 选择菜单栏上的[Window->Perferences->Android->NDK]设置 NDK Loaction 为D:\\Android\\android-ndk-r10d;

添加环境变量 NDK_ROOT 为: D:\\Android\\android-ndk-r10d
在环境变量 PATH 下追加 :%NDK_ROOT%;

5
如果是在Windows上做开发的话,建议使用VisualGDB插件,方便进行调试,具体的话可以看“VisualGDB 环境搭建”
参考技术A 需要怎么改变? 参考技术B 需要怎么改变?

如何解决Android ndk build命令失败?

我在android studio中使用android ndk开发简单的ndk示例。运行我的app studio时显示以下错误。

Build command failed.
Error while executing process D:Sdkcmake3.6.4111459incmake.exe with 
arguments {--build D:Android StudioWorkspaceNDKSampleapp.externalNativeBuildcmakedebugarm64-v8a --target native-lib}
[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.oFAILED: D:Sdk
dk-bundle	oolchainsllvmprebuiltwindows-x86_64inclang++.exe  --target=aarch64-none-linux-android --gcc-toolchain=D:/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=D:/Sdk/ndk-bundle/sysroot  -Dnative_lib_EXPORTS -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem D:/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security  -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -MF CMakeFiles
ative-lib.dirsrcmaincpp
ative-lib.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -c "D:Android StudioWorkspaceNDKSampleappsrcmaincpp
ative-lib.cpp"
error: error reading 'D:Android StudioWorkspaceNDKSampleappsrcmaincpp
ative-lib.cpp'
1 error generated.ninja: build stopped: subcommand failed.

我有搜索很多,但无法找到正确的答案,为什么我在这里问。我还unintsall所有组件,并重新安装在我的工作室仍然有错误。

另一件事如果我从.CPP将文件扩展名更改为.C,整个项目都会得到编译,甚至可以正常运行。我不知道为什么它不适用于.CPP文件。

我正在使用的组件。

Android Stuido - 3.1.3

gradle - 3.1.0

cmake - 3.6.4111459

Android ndk - 17.1.4828580

lldb -3.1

本机lib.cpp

#include <jni.h>#include <string>extern "C" JNIEXPORT jstringJNICALLJava_com_mastek_ndksample_MainActivity_stringFromJNI(
    JNIEnv *env,
    jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());}

的build.gradle

apply plugin: 'com.android.application'android {    compileSdkVersion 27
defaultConfig {
    applicationId "com.example.ndksample"
    minSdkVersion 15
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    externalNativeBuild {
        cmake {
            cppFlags "-frtti -fexceptions"
        }
    }

}

sourceSets {
    main {
        jniLibs.srcDirs = ['src/main/jniLibs']
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}}dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}

有人知道请帮我解决这个问题。提前致谢。

答案

当项目文件的路径包含空格时,NDK构建失败。要修复构建,请将项目复制到没有空格的路径。

另一答案

经过大量的试验和github google的帮助,我能够解决。要解决问题,我已按照以下步骤操作。

1.到项目目录。

2.deleted .gradle,app / .externalNativeBuild和app / build。

3.将local.properties ndk路径更改为外部ndk-r16b。

4.通过Android工作室运行。

5.最终apk是生成的。

以上是关于如何改变ndk android的主要内容,如果未能解决你的问题,请参考以下文章

AndroidAndroid如何一进入一个activity就弹出输入法键盘

即使没有更改,ndk-build也会安装库。这可以改变吗?

是否有可能改变Android中蓝牙传输的频率?也许通过NDK?

Androidandroid常用工具类。

AndroidAndroid六种布局详解

androidAndroid 获取系统各个目录