Joh*_*Doe 12 android android-ndk
我有这样的问题:
[2013-11-18 14:38:50 - HelloJni] Unknown Application ABI:
[2013-11-18 14:38:50 - HelloJni]
[2013-11-18 14:38:50 - HelloJni] Unable to detect application ABI's
Run Code Online (Sandbox Code Playgroud)
每个项目都会出现此问题,我正在尝试将其调试为"本机".我已经看过这个,这个和这个主题,但这个解决方案并没有对我的案例产生任何影响.
在其他计算机或VM上,相同的项目可以使用相同的设置正常运行.
表现
...
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<application android:label="@string/app_name"
android:debuggable="true">
...
Run Code Online (Sandbox Code Playgroud)
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.cpp
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
项目选项中的Verison也已设置为api-14.
我还下载了eclipse,sdk,ndk的新版本.我清理了所有系统范围的变量和PATH元素.我的机器在win7x64下运行.
PS.只有当我尝试调试时才会出现问题,当我构建并运行它时 - 运行良好.
Edit1这是我的ndk-build DUMP_APP_ABI大纲
c:\Users\Usr\workspace\HelloJni>D:\ndk\ndk-build.cmd DUMP_APP_ABI
armeabi
c:\Users\Usr\workspace\HelloJni>
Run Code Online (Sandbox Code Playgroud)
Edit2重要通知.我试图debug as native在不同的机器上运行下一步git clone- > import to ide - > Debug as native.所有机器都具有几乎相同的配置(Win7对于所有机器都是通用的).这个问题只出在我的电脑上.我试过不同的IDE(eclipse + cdt,adt),清理path,检查行结尾.Finnaly我决定在linux VM下开发本机代码.这是我的解决方案.此外,我不再需要cygwin来交叉编译一些库.
Ale*_*ohn 11
特别是在Windows上,可能是因为其中一个文件(project.properties,Application.mk,Android.mk或AndroidManfest.xml)的行结尾错误(CRLF).您运行ndk-build DUMP_APP_ABI并确保输出是干净的.
应该禁用此目标的所有使用$(info …)或$(__ndk_info)等.
ABI检测逻辑放在com.android.ide.eclipse.ndk插件com.android.ide.eclipse.ndk.internal.NdkHelper类中.实际上,它着眼于命令的输出
make --no-print-dir -f $NDK_ROOT/build/core/build-local.mk -C $PROJECT_ROOT DUMP_APP_ABI
Run Code Online (Sandbox Code Playgroud)
如果输出不包含有效的ABI,您将看到如下消息(或消息):
[$DATE $TIME - $PROJECT] Unknown Application ABI:
[$DATE $TIME - $PROJECT] $ANY
[$DATE $TIME - $PROJECT] Unable to detect application ABI's
Run Code Online (Sandbox Code Playgroud)
首先运行手动命令
make --no-print-dir -f $NDK_ROOT/build/core/build-local.mk -C $PROJECT_ROOT DUMP_APP_ABI
Run Code Online (Sandbox Code Playgroud)
如果输出包含错误,请先修复它.如果此命令正常工作,它应该生成空格分隔的ABI,如下所示:
x86 armeabi
Run Code Online (Sandbox Code Playgroud)
特别是在我的情况下,我缺少环境变量GStreamer.所以要修复这个我GSTREAMER_SDK_ROOT在Android.mk文件中指定的变量
| 归档时间: |
|
| 查看次数: |
8604 次 |
| 最近记录: |