2017-05-24 16 views
2

나는 6 개에서 최신 14 개까지 (네이티브 코드의 빌드를 테스트하기 위해) 시작하는 많은 안드로이드 NDK 개정판을 가지고있다. 저장 공간을 절약하기 위해 나는 툴체인을 ./toolchains/ (안드로이드 ndk 10c에서 더 자세히)에서 삭제했습니다. 확실히 필요하지 않습니다.Android NDK에서 툴체인을 제거하는 방법은 무엇입니까?

지금하는 동안 다음과 같은 오류를 받고 있어요 Gradle을 가진 라이브러리 코드를 구축을 위해 노력 :

No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android

Application.mk에 난 단지 armeabi-v7x86이 있지만 : build.gradle에서

APP_ABI := armeabi-v7a x86

를 내가 가지고 :

android { 
    compileSdkVersion 16 
    buildToolsVersion "25.0.0" 

    defaultConfig { 
    ... 

    ndk { 
     abiFilters 'armeabi-v7a', 'x86' 
    } 
    } 

    externalNativeBuild { 
    ndkBuild { 
     path 'jni/Android.mk' 
    } 
    } 

    ... 
} 

어떻게 불필요한 툴체인을 적절하게 삭제할 수 있습니까?

+0

이전 NDK 릴리스에서 코드의 빌드 가능성을 테스트하는 것은 가치가없는 것으로 보입니다. NDK 릴리스는 구형 플랫폼과의 하위 호환성을 유지합니다 (현재 베타 버전 인 r15만이 android-9를 떨어 뜨렸고, android-14로 최소로 이동하여 5 월 2 일에도 여전히 활성화 된 장치의 99 %를 차지함). 어쨌든, 귀하의 gradle 통합은 하나의 NDK 개정판에서만 작동합니다. 최근 버전을 유지하고이 개정판의 모든 툴 체인을 보관하십시오. –

+0

이것은 100 %가 아닙니다. 예 : V8에는 특정 버전의 toolchain이 필요합니다.이 버전은 최신 버전에만 없습니다. 또한 연결에 몇 가지 중요한 변화가 있습니다. 10e와 11 사이의 차이가 있습니다 ('libC++의 인라인 네임 스페이스가 std :: __ ndk1로 변경되어 플랫폼 libC++에서 ODR 문제가 발생하지 않도록 변경됨). 그러면 라이브러리가 10e와 연결될 수 있지만 11과 함께 연결될 수 없습니다. – 4ntoine

+0

왜 그럴 가치가 있습니까? NDK 10e에서 코드 컴파일을 보장하려면? –

답변

2

그래 플을 사용하려면 할 수 없습니다. Gradle은 모든 툴 체인을 온 전성 검사의 일부로 검사합니다. 최신 절대 NDK (R15 베타 2)와 카나리아 스튜디오/Gradle을를 사용하는 경우

, 당신은 당신이 $NDK/meta/abis.json에서 "사용되지 않는"로 제거 툴 체인을 표시하여이 작업을 수행 할 수 있습니다.

+0

나는 오류가없는 일부 툴체인을 제거 할 수 있었기 때문에 툴체인 존재를 확인하기 위해 Gradle 알고리즘이 무엇인지 아직도 궁금합니다. – 4ntoine