• 全部
  • 音视频
  • Camera
  • UI
  • SDK
  • Android Studio
  • 问答

求助,怎么编译出 64 位的 so,谢谢!

lsh9982010 2021-04-12 10:45:26
请教:
我现在 在 jni 有文件 Android.mk


LOCAL_PATH:= $(call my-dir)


LOCAL_MODULE := libPort_Dv
LOCAL_CFLAGS := -Werror
LOCAL_SRC_FILES := Port_Dv.c
LOCAL_LDLIBS := -llog -lGLESv2

include $(BUILD_SHARED_LIBRARY)

上面这段是可以编译出 32 位的 so
并且可以使用

现在我需要编译 64 位的



LOCAL_PATH:= $(call my-dir)
LOCAL_MULTILIB := 64

LOCAL_MODULE := libPort_Dv
LOCAL_CFLAGS := -Werror
LOCAL_SRC_FILES := Port_Dv.c
LOCAL_LDLIBS := -llog -lGLESv2

include $(BUILD_SHARED_LIBRARY)


so 文件是可以编译出
但是不能使用,我哪里错了?
要怎么写才能编译出 64 位的 so

我编译用的命令的
ndk-build

谢谢!
...全文
115 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我要编译出 64 位的 so 然后把这个 so 放到 unity 里 所有,是需要编译出 64 位的 so (也是就是 dll) 谢谢!
回复
韩曙亮 04-12
Module 下的 build.gradle 中配置
回复
韩曙亮 04-12

apply plugin: 'com.android.application'

android {
    ...
        /*
            关于 CPU 指令集

            NDK 17 以上只支持 armeabi-v7a, arm64-v8a, x86, x86-64 四种 CPU 指令集架构
         */

        // 配置 AS 工程中的 C/C++ 源文件的编译
        //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
        //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
        externalNativeBuild {
            cmake {
                cppFlags ""

                //配置编译 C/C++ 源文件为哪几个 CPU 指令集的函数库 (arm , x86 等)
                abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
            }
        }


        //配置 APK 打包 哪些动态库
        //  示例 : 如在工程中编译的函数库 , 其提供了 arm, x86, mips 等指令集的动态库
        //        那么为了控制打包后的应用大小, 可以选择性打包一些库 , 此处就是进行该配置
        ndk{
            // 打包生成的 APK 文件指挥包含 ARM 指令集的动态库
            abiFilters "armeabi-v7a" , "arm64-v8a", "x86", "x86_64"
        }


    }

    // 配置 NDK 的编译脚本路径
    // 编译脚本有两种 ① CMakeList.txt ② Android.mk
    //     defaultConfig 内部的 externalNativeBuild 配置的是配置 AS 工程的 C/C++ 源文件编译参数
    //     defaultConfig 外部的 externalNativeBuild 配置的是 CMakeList.txt 或 Android.mk 构建脚本的路径
    externalNativeBuild {

        // 配置 CMake 构建脚本 CMakeLists.txt 脚本路径
        //  使用该配置时 , 将 ndkBuild 配置注释掉
        /*cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }*/

        // 配置 Android.mk 构建脚本路径
        //  使用该配置时 , 将 cmake 配置注释掉
        ndkBuild{
            path "src/main/cpp/Android.mk"
        }
    }
	...
}
...
————————————————
版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shulianghan/article/details/104272170
"arm64-v8a", "x86_64" 这两个配置是 64 位的 ; 开发的时候只配置一个 armeabi-v7a 就可以 , 配置多了没啥用 , 导致 APK 体积变大
回复
defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } 写到哪里? 谢谢!
回复
defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } }
回复
发帖
Android
创建于2009-10-09

7.8w+

社区成员

移动平台 Android
申请成为版主
帖子事件
创建了帖子
2021-04-12 10:45
社区公告
暂无公告