虽然有关于把一个文件jstring到本地字符串(string nativeString = env->GetStringUTFChars(jStringVariable, NULL);)我找不到这将转换为一个例子jboolean,以一个bool或jint一个int.
谁能建议如何实现这一目标?
新的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) 我正在尝试使用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文件夹.
我在eclipse上有两个项目,一个生成一个,另一个是使用它的Android应用程序我正在尝试使用本指南调试本机代码.
当我运行本机调试器时,我得到:
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) 大多数时候,在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
我认为这是一个错误,因为在新的更新之前我没有任何问题.所以我不能使用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文件.
我一直在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:正在中止.停止.
有什么想法吗?
我正在研究一些应该能够在我的应用程序中阅读PDF的东西,并且我希望将PDF视图放在我的自定义布局中.我更喜欢Android PDF Viewer但是当我执行zoomIn时,zoomOut需要花费太多时间.
所以目前我应该使用MuPDF开源项目集成到我的项目中,它基于JNI,我不习惯它.
我正在使用Cygwin为本机代码构建库.因此,我不清楚几件事情:
如何在我的项目中整合MuPDF(根据我的问题标题)?
一旦我成功整合它,那么如何将PDF阅读器放入我的自定义视图(在XML或programmaticaly中)?
我正在开发通过NDK与Android一起使用的本机应用程序.我需要在backtrace()发生崩溃时调用该函数.问题是<execinfo.h>NDK 没有 .
有没有其他方法来获得回溯?
我有安装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没有像这样的目录结构
android-ndk ×10
android ×8
c ×2
bitmap ×1
c++ ×1
eclipse ×1
installation ×1
mupdf ×1
pdf ×1
render ×1