小编Lux*_*ter的帖子

Android NDK:如何在Android.mk中动态获取编译器体系结构

我正在尝试配置Android.mk以交叉编译本机代码以支持不同的芯片组,即armeabi,mips和x86.我知道我可以用以下方式配置Application.mk来编译不同芯片组的源代码:

APP_ABI := all
Run Code Online (Sandbox Code Playgroud)

这将触发Android-NDK的构建脚本来编译所有芯片组的源代码.但是,我想动态告诉Android.mk寻找使用不同芯片组编译的不同静态库依赖项.

# Get the architecture info
ARCH := ????

include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,有人可以建议如何这样做吗?

更新:我在Application.mk中尝试过类似的东西:

 APP_ABI := armeabi armeabi-v7a mips x64
Run Code Online (Sandbox Code Playgroud)

使用Android.mk:

# Get the architecture info
ARCH := $(APP_ABI)

include $(CLEAR_VARS)
LOCAL_MODULE:= mylib
LOCAL_SRC_FILES:= build/lib/libxxx_$(ARCH).a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
include $(PREBUILT_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

但它有以下错误:

 The LOCAL_SRC_FILES for a prebuilt static library should only contain one item
Run Code Online (Sandbox Code Playgroud)

这是有道理的.我想在Application.mk中传递APP_ABI:= all并能够动态引用它.有任何想法吗?

android android-ndk

35
推荐指数
2
解决办法
3万
查看次数

在内部类中使用泛型参数时Java编译失败

请查看下面的代码段:

interface IFoo<E>{
    void doFoo(E env);
}

class A<E>{
    public void doA(E env){}
}

public class Foo<E> implements IFoo<E>{
    public A<E> a;

    @Override
    public void doFoo(E env) {
        a.doA(env);
    }

    private class FooInner<E> implements IFoo<E>{

        @Override
        public void doFoo(E env) {
            a.doA(env);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Eclipse在私有内部类中抱怨a.doA(env)以下消息.

The method doA(E) in the type A<E> is not applicable for the arguments (E)
Run Code Online (Sandbox Code Playgroud)

它似乎不像可访问性问题,因为非静态内部类可以访问outter类的所有实例变量.看起来我在某处定义了我的泛型错误.谁能解释一下我在这里做错了什么?

java generics inner-classes

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

标签 统计

android ×1

android-ndk ×1

generics ×1

inner-classes ×1

java ×1