我正在尝试使用android-ndk-r5独立工具链和autotools编译库.在执行./configure时,它失败了:
$ ./configure --host=arm-linux-androideabi ...snip... checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized configure: error: /bin/sh ./config.sub arm-linux-androideabi failed
显式设置CC和CXX也不起作用(configure表示使用--host).
NDK文档和各种在线资料似乎表明以这种方式使用独立工具链应该是可能的.这有什么不对?我该如何解决?(除了简单地放弃autoconf并回到Android.mk)
我有一个依赖第三方,仅二进制JNI库的android项目。使用ant,我可以将.so放到libs /中,将标头放到jni /中,然后完成。
但是,我的其余android项目都使用maven,并且我希望能够将此库集成到我现有的基于maven的项目中,就像我使用任何其他库一样(例如,带有<dependency />条目,库是从公司服务器自动下载的) 。
我曾尝试使用手动上传的.so文件,mvn deploy:deploy-file有-Dpackaging=so和-Dclassifier=armeabi,和在一个zip上传的标题和使用部署-Dpackaging=har。但是NDK仍然无法检测到库和标头。
我的Android.mk是
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := my-dependency
LOCAL_SRC_FILES := test.cpp
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
和我pom中的依赖
<dependency>
<groupId>com.thirdparty.my-dependency</groupId>
<artifactId>my-dependency</artifactId>
<version>1.0</version>
<classifier>armeabi</classifier>
<type>so</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在Android的Maven中部署这样的第三方库的最佳方法是什么?
我有一个特点
trait B {
type Index: Sized + Copy;
fn bounds(&self) -> (Self::Index, Self::Index);
}
Run Code Online (Sandbox Code Playgroud)
我希望得到所有的Index内容bounds:
fn iterate<T: B>(it: &T) {
let (low, high) = it.bounds();
for i in low..high {}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为没有约束条件T可以"范围"结束,编译器也说了这么多:
error[E0277]: the trait bound `<T as B>::Index: std::iter::Step` is not satisfied
--> src/main.rs:8:5
|
8 | for i in low..high {}
| ^^^^^^^^^^^^^^^^^^^^^ the trait `std::iter::Step` is not implemented for `<T as B>::Index`
|
= help: consider adding a `where <T …Run Code Online (Sandbox Code Playgroud)