标签: android-ndk

将JNI类型转换为本机类型

虽然有关于把一个文件jstring到本地字符串(string nativeString = env->GetStringUTFChars(jStringVariable, NULL);)我找不到这将转换为一个例子jboolean,以一个booljint一个int.

谁能建议如何实现这一目标?

java-native-interface android-ndk

48
推荐指数
2
解决办法
5万
查看次数

如何使用Android Gradle插件0.7配置NDK

新的Android gradle插件(0.7)似乎包含对NDK的新支持,但在文档中几乎没有提到它(我发现的唯一参考是一个名为test的测试 ndkSanAngeles).

看起来gradle正在寻找我已经包含在我的PATH中的NDK.但是,构建项目失败了

  • 出了什么问题:任务执行失败':OGLTests:compileDefaultFlavorDebugNdk'.NDK未配置

如何在gradle中配置NDK?

我当前的build.gradle看起来像这样:

task nativeLibsToJar(type: Zip, description: 'create a jar with native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    extension 'jar'
    from fileTree(dir: 'src/main/libs', include: '**/*.so')
    from fileTree(dir: 'src/main/libs', include: '**/gdb*')
    into 'lib/'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn nativeLibsToJar
}

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.0'

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "0.1"

    }
    buildTypes {
        release {
            runProguard false
        }
        debug {
           // …
Run Code Online (Sandbox Code Playgroud)

android-ndk android-studio android-gradle-plugin

48
推荐指数
3
解决办法
6万
查看次数

Android NDK:没有规则来制定目标

我正在尝试使用NDK构建一个简单的Android应用程序.以下是我的Android.mk的内容

LOCAL_PATH := $(call my-dir)  

include $(CLEAR_VARS)  

LOCAL_LDLIBS := -llog  

LOCAL_MODULE    := myNDK
LOCAL_SRC_FILES := native.c

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

当我运行ndk-build时,我得到:

make:*没有规则来制作目标 '/native.c', needed by '/Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o'.停止.

所以问题显然是make正在搜索根目录中的源文件,如果我将native.c复制到我的根文件夹,一切都很完美.

问题是:我应该在Android.mk中指定什么来将LOCAL_PATH设置为我的工作jni文件夹.

android android-ndk

47
推荐指数
1
解决办法
5万
查看次数

最终启动顺序错误无法执行MI命令-gdb-set target-async off

我在eclipse上有两个项目,一个生成一个,另一个是使用它的Android应用程序我正在尝试使用本指南调试本机代码.

  1. 我设置我的应用程序可调试
  2. 我在调试模式下启动了我的应用程序
  3. 我运行ndk-gdb

当我运行本机调试器时,我得到:

Error in final launch sequence
Failed to execute MI command:
-gdb-set target-async off
Error message from debugger back end:
Cannot change this setting while the inferior is running.
Cannot change this setting while the inferior is running.
Run Code Online (Sandbox Code Playgroud)

eclipse android android-ndk

46
推荐指数
1
解决办法
2760
查看次数

如何在使用大图像时使用JNI位图操作来帮助避免OOM?

背景

大多数时候,在Android上获取OOM是由于使用了太多位图和/或创建大位图.

最近我决定试用JNI,以便通过将数据本身存储在JNI端来避免OOM.

在与JNI搞砸了一段时间后,我在SO上创建了一些帖子,寻求帮助并分享我的知识,现在我决定与你分享更多代码.如果有人有兴趣阅读调查结果或做出贡献,这里有帖子:

这一次,我添加了存储,恢复,裁剪和旋转位图的功能.它应该很容易添加更多选项,如果其他人在这里将自己的代码添加到更有用的功能,我会很高兴.

所以我要展示的代码实际上是合并了我创造的所有东西.

示例使用代码:

Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
final int width=bitmap.getWidth(),height=bitmap.getHeight();
// store the bitmap in the JNI "world"
final JniBitmapHolder bitmapHolder=new JniBitmapHolder(bitmap);
// no need for the bitmap on the java "world", since the operations are done on the JNI "world"
bitmap.recycle();
// crop a center square from the bitmap, from (0.25,0.25) to (0.75,0.75) of the bitmap.
bitmapHolder.cropBitmap(width/4,height/4,width*3/4,height*3/4);
//rotate the bitmap:
bitmapHolder.rotateBitmapCcw90();
//get the output java bitmap , …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android bitmap out-of-memory android-ndk

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

如何修复android studio 2.3 NDK bug?

我认为这是一个错误,因为在新的更新之前我没有任何问题.所以我不能使用gradle控制台调试我的应用程序,因为我有这个警告 -

"按需配置是一个孵化功能.NDK缺少"平台"目录.如果您使用NDK,请验证ndk.dir是否设置为有效的NDK目录.它当前设置为C:\ Users\Emily Thacker\AppData\Local\Android\Sdk \ndk-bundle.如果您没有使用NDK,请取消设置ANDROID_NDK_HOME或local.properties中的NDK变量以删除此警告."

我很确定我没有使用NDK,我不知道如何解决这个问题,这是我的local.properties

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=C\:\\Users\\Emily Thacker\\AppData\\Local\\Android\\Sdk
Run Code Online (Sandbox Code Playgroud)

另外,我在目录中看不到ANDROID_NDK_HOME文件.

android android-ndk

46
推荐指数
6
解决办法
5万
查看次数

在Eclipse中安装和使用Android NDK

我一直在Eclipse(MAC OSX)中运行Android SDK一段时间.我已经下载了NDK并在Eclipse中安装了C/C++工具,但有人可以指导我使用NDK吗?例如,我是否只是像普通的那样创建一个Android项目并用NDK构建它?

如果有人知道的话,真的可以用一个体面的教程.

编辑:好的,所以我现在安装了NDK(我认为)但有没有人知道如何使用它?我得到了这个(取自这里):

运行终端

cd~/android-ndk-1.5_r1

制作APP = hello-jni

为了运行hello-jni示例应用程序,但我在终端中收到错误说:

Android NDK:为未知应用程序定义的APP变量:hellojni
Android NDK:您可能希望使用以下之一:
build/core/main.mk:81:***Android NDK:正在中止.停止.

有什么想法吗?

installation android android-ndk

45
推荐指数
3
解决办法
9万
查看次数

在应用程序中集成MuPDF Reader

我正在研究一些应该能够在我的应用程序中阅读PDF的东西,并且我希望将PDF视图放在我的自定义布局中.我更喜欢Android PDF Viewer但是当我执行zoomIn时,zoomOut需要花费太多时间.

所以目前我应该使用MuPDF开源项目集成到我的项目中,它基于JNI,我不习惯它.

我正在使用Cygwin为本机代码构建库.因此,我不清楚几件事情:

  1. 如何在我的项目中整合MuPDF(根据我的问题标题)?

  2. 一旦我成功整合它,那么如何将PDF阅读器放入我的自定义视图(在XML或programmaticaly中)?

pdf android render android-ndk mupdf

45
推荐指数
4
解决办法
6万
查看次数

Android NDK:获得回溯

我正在开发通过NDK与Android一起使用的本机应用程序.我需要在backtrace()发生崩溃时调用该函数.问题是<execinfo.h>NDK 没有 .

有没有其他方法来获得回溯?

c c++ android android-ndk

44
推荐指数
6
解决办法
4万
查看次数

如何将C编译成可执行的二进制文件并从Android Shell在Android中运行?

我有安装Android Gingerbread 2.3.4的设备在这里我想在Android设备上运行C可执行文件

我能够在Device上运行android NDK应用程序,并且它运行完美但是我想hello.c在Device上只运行一个可执行文件.

/* #includes #defines ... */

int main(){
    // Do something when this is executed
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用Android NDK工具链编译这个文件,我们可以运行这个文件的可执行文件

我在这里发现了一件事,但这对我来说不起作用我使用Android NDK, Revision 7blinux没有像这样的目录结构

c android android-ndk

44
推荐指数
5
解决办法
5万
查看次数