- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的问题超出了标题所说的范围,所以会在问题之前给出背景。自从我从 Android Studio 1.5 更新到 2.0(现在使用 2.1.1 稳定版,也尝试过测试版)以来,我一直在试验问题
背景
当我更新我的 Android Studio 并在 NDK 中打开 c 文件时,y 开始收到以下消息: 即使我已经同步了项目,也会出现此消息。
编译器工作正常,因为我可以忽略 c 中的修改内容,它仍然可以编译。然后我尝试添加一个由我创建的文件的新包含,其中包含一些设置和方法,相同的文件包含在其他运行良好的文件中。然而,这次编译器抛出以下错误:
error: undefined reference to 'my_method'
调试了好久没有成功,所以决定迁移到实验性的gradle,这样就不会出现这个问题了。
这是我现在使用的:- 渐变实验:0.7.0- 包装器:gradle-2.10-all.zip
我的 gradle 文件是这样的:
apply plugin: 'com.android.model.application'
import org.apache.tools.ant.taskdefs.condition.Os
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig.with {
applicationId "com.domain.myapp"
minSdkVersion.apiLevel 15
targetSdkVersion.apiLevel 23
versionCode 1
versionName "1.0"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
}
}
}
task runSwig(type: Exec, description: 'Run swig config') {
workingDir 'src/main'
commandLine 'cmd', '/c', 'swig.bat'
}
ndk {
moduleName "MyNativeModule"
//toolchain "clang"
}
sources.main {
jni {
source {
srcDir 'src/main/libs' //set .so files location to libs
srcDirs = [] //disable automatic ndk-build call
}
}
}
buildTypes {
debug {
debuggable true
ndk.with {
debuggable = true
}
versionNameSuffix "1.0"
}
}
}
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'org.litepal.android:core:1.2.1'
}
现在,当我运行 clean 时它成功完成,但是..
现在的问题:
*我正在使用 libusb 库当我尝试构建时,出现以下错误:
-Error:(20, 20) config.h: No such file or directory
-Error:(33, 30) libkern/OSAtomic.h: No such file or directory
-Error:(29, 25) dev/usb/usb.h: No such file or directory
... many others like these
对于库中的 config.h,它是这样包含的:
#include <config.h>
因为我在库的父目录中有那个文件,所以我设法让它以这种方式工作:
#include "../config.h>
另一方面,对于其他文件,我没有目录,也没有库中的文件,所以我无法引用它们。此外,当我用谷歌搜索时,我看到这些文件属于 MacOS。
对于标准的 gradle,这不是问题,因为它编译起来非常棒!
我的问题是:
我已经尝试过的:
随着我越来越熟悉 NDK 和 C,我的问题可能很明显,任何帮助将不胜感激!
更新
我正在构建 libusb 库,因为我对它做了一些更改。 (除了我上面描述的问题外,使用稳定的 gradle 可以正常工作,在更新之前我已经使用这个设置几个月了,一切都按预期工作)
我的目录结构如下:
-jni
-jni/myUSB/libusb
这是我的 Android.mk 文件,您可以看到我是如何构建它们的:jni:
LOCAL_PATH := $(call my-dir)
ROOT_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(ROOT_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := myModuleName
LOCAL_CFLAGS := -O2 -ffast-math
LOCAL_LDLIBS := -llog
LOCAL_SRC_FILES := \
jiw.cpp \
mainFile.c \
otherFile.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/
LOCAL_SHARED_LIBRARIES := myUSB
include $(BUILD_SHARED_LIBRARY)
我的USB:
LOCAL_PATH := $(call my-dir)
ROOTUSB_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(ROOTUSB_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := myUSB
LOCAL_CFLAGS := -O2 -ffast-math
LOCAL_LDLIBS := -llog -pthread
LOCAL_SRC_FILES := \
myUsbMainFile.c \
myUsbInterface.c \
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/
LOCAL_SHARED_LIBRARIES := android-usb
include $(BUILD_SHARED_LIBRARY)
libusb:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android-usb
LOCAL_CFLAGS := -O2 -ffast-math
LOCAL_LDLIBS := -llog
LOCAL_SRC_FILES := \
core.c \
descriptor.c \
io.c \
sync.c \
os/linux_usbfs.c \
os/threads_posix.c \
os/android_java.c
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/ \
$(LOCAL_PATH)/os
include $(BUILD_SHARED_LIBRARY)
最佳答案
我看不到,您在哪里将 libusb 连接到您的项目。因此,您可能必须手动链接它。 Here是一个示例,如何在 build.gradle 中静态/动态链接库。
关于c - 迁移到实验性 gradle Android Studio 2.0+ 时包含的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217116/
我尝试在 gcc 6.0 中实际使用新的 c++1z 功能。 如果我尝试这个小例子: #include #include namespace fs = std::experimental::fil
我有兴趣为一个副项目构建一个新风格的 IDE。主要是为了取消类固醇IDE上的普通记事本。我正在为已经尝试过的或者你已经看到(或没有看到)看起来很酷并且在 IDE 中有用的东西寻找一些灵感。我可以解决的
使用实验性 CSS 属性如 border-radius、text-shadow、box-shadow 和 gradient 在今天的布局中?像 rgba() 这样的值呢? 当我查看网络画廊时,这些 C
我想制作一个 chrome 扩展,作为浏览器窗口的面纱。用户访问网站的次数越多,他们的历史记录就越多。我看过一些 chrome 扩展程序,但它们似乎都链接到一个图标,每次你访问一个新站点时,弹出窗口都
我想在 C++17 中删除包含子文件夹和文件的文件夹。我正在使用 experimental/filesystem namespace filesys = std::experimental::file
我正在尝试设置我的应用程序以使用 Airflow 的实验性 API。我正在使用 apache-airflow==1.10.2 . 使用开箱即用的配置(未启用身份验证),我能够使用 POST /api/
我在 these examples 之后使用 gradle 构建了一些测试 c 和 c++ 程序 在 this answer 的帮助下,我还能够设置具有实验功能的 android studio 来构建
我只是尝试实现一个充当代理的 python 应用程序(用于端口 22)代码如下: import socket import select import code inputSock = socket.
是否存在适用于 Ruby 的(实验性)类浏览器? 我说的是类似于大多数 Smalltalk 实现的类浏览器/编辑器组合(即专注于 [运行时] 类/对象而不是 .rb 文件) P.S.:看起来 pry
引用: Using the new code snippets feature in google chrome 我正在 google chrome 中使用代码片段,所以说我有一个片段文件。check
我有一个 Android 项目,我们使用实验性 Gradle 插件已有一段时间了。随着 Android Studio 3 的发布和向 Gradle 4 的迁移,我有几个问题 在几个月内没有人添加新的实
我尝试实现一个 make_array 的版本,它不完全相同,但非常类似于: http://en.cppreference.com/w/cpp/experimental/make_array 我发现这段
当我更新 ddev 版本 1.19.0 时,drush 命令不起作用。 $ ddev drush OCI runtime exec failed: exec failed: container_lin
我想使用 USB 实验性 api 开发一个 chrome 扩展。我从来没有设法找到我的 USB 设备已连接。这个扩展的起点是这段代码: knob example我更改了 vid 和 pid 以匹配我的
我们如何使用 C API 在 Tensorflow Lite 中创建张量?然后我们如何将它们与解释器一起使用? 我知道 Tensorflow Lite 有 C++ API 的文档,而常规的 Tenso
我玩了一下 experimental device lambdas在 CUDA 7.5 中引入并在此 blog post by Mark Harris 中提升. 对于下面的示例,我删除了很多不需要显示
我正在关注这篇文章 @ https://firebase.googleblog.com/2018/01/streamline-typescript-development-cloud-function
我的问题是我找不到一些合适的文档/指南来遵循以正确设置我的环境。 基本上我使用的是 Android Studio 1.3.2(截至 2015 年 9 月 22 日的最新稳定版)和 Gradle 实验版
我有一个使用 opencv android sdk 的项目,为了加快速度,我决定用 C++ 实现一些功能。 无论如何,我正在使用 gradle 实验性插件 0.4.0 以及何时为 arm64-v8a
我正在尝试在 Android Studio 中使用 NDK 运行一些 native 代码。我已按照显示的步骤进行操作 HERE使用实验性的 Gradle,但显然并不是一帆风顺。我收到此错误:必须将 a
我是一名优秀的程序员,十分优秀!