尝试为arm64构建APK时出现链接器错误

时间:2019-06-25 08:34:48

标签: android-ndk arm64

我正在尝试重建旧的应用程序(最初是armeabi)以支持arm64。当前的NDK是android-ndk-r10e-windows-x86_64。我必须使用此NDK版本。其他NDK版本将破坏当前代码。

我从更改了应用程序级别build.gradle

abiFilters "armeabi"

abiFilters "armeabi",'arm64-v8a'

但是,当我第一次尝试构建时,出现错误: C:/用户/用户/文档/android_studio/app/src/main/jni/gameswf/base/tu_timer.cpp:8:38:致命错误:sys / timeb.h:无此类文件或目录  #include // for ftime()

似乎在android-ndk-r10e中,文件timeb.h被删除。我不知道如何解决它,所以我手动将“ platforms \ android-14 \ arch-x86 \ usr \ include \ sys \ timeb.h”复制到“ platforms \ android-21 \ arch-arm64 \ usr \ include \ sys \ timeb.h”,然后重试,但出现以下错误:

C:/用户/用户/文档/android_studio/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/native-lib/gameswf/base/tu_timer.o:在函数{{ 1}} ftime' C:/用户/用户/文档/android_studio/app/build/intermediates/ndkBuild/release/obj/local/arm64-v8a/objs/native-lib/gameswf/base/tu_timer.o:在函数tu_timer::init_timer()': C:/Users/user/Documents/android_studio/app/src/main/jni/gameswf/base/tu_timer.cpp:15: undefined reference to中ftime' collect2.exe:错误:ld返回1退出状态

应用程序级别build.gradle

tu_timer::get_ticks()':
C:/Users/user/Documents/android_studio/app/src/main/jni/gameswf/base/tu_timer.cpp:21: undefined reference to

Application.mk

defaultConfig {
    //applicationId "applicationId"
    minSdkVersion 14
    targetSdkVersion 26

    // Enabling multidex support.
    multiDexEnabled true

    ndk {
        moduleName "native-lib"
        //abiFilters "armeabi"
        abiFilters "armeabi",'arm64-v8a'
    }
}

我不知道下一步该怎么做。请帮忙!

1 个答案:

答案 0 :(得分:0)

Android不支持ftime。请改用gettimeofday。参见man page

  

4.2BSD,POSIX.1-2001。 POSIX.1-2008删除了   ftime()。

     

该功能已过时。不要使用它。如果时间以秒为单位   足够,可以使用time(2); gettimeofday(2)给出微秒;   clock_gettime(2)可以提供纳秒级的数据,但使用范围不广。