2017-04-26 347 views
4

我正在Antergos Linux環境中開發android studio上的應用程序。一切正常,同步,建立和調試。一天前,一些更新,它不再建立。源代碼完全相同,我已經嘗試將我的代碼重置爲以前也可以使用的較早的提交,所以我知道問題不在我的代碼中。 Gradle同步消息是:Antergos Linux上的「OPENSSL_1.0.0 not found」

Build command failed. 

Error while executing process /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake with arguments {-H/home/andre/Development/Edru/edru-android/app 
-B/home/andre/Development/Edru/edru-android/app/.externalNativeBuild/cmake/debug/armeabi 
-GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/andre/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/andre/Development/Edru/edru-android/app/build/intermediates/cmake/debug/obj/armeabi 
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/home/andre/Android/Sdk/cmake/3.6.3155560/bin/ninja 
-DCMAKE_TOOLCHAIN_FILE=/home/andre/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake 
-DANDROID_PLATFORM=android-19 -DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions} 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

Build command failed. 

Error while executing process /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake with arguments {-H/home/andre/Development/Edru/edru-android/app 
-B/home/andre/Development/Edru/edru-android/app/.externalNativeBuild/cmake/release/armeabi 
-GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/andre/Android/Sdk/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/andre/Development/Edru/edru-android/app/build/intermediates/cmake/release/obj/armeabi 
-DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/andre/Android/Sdk/cmake/3.6.3155560/bin/ninja 
-DCMAKE_TOOLCHAIN_FILE=/home/andre/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake 
-DANDROID_PLATFORM=android-19 -DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions} 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

/home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by /home/andre/Android/Sdk/cmake/3.6.3155560/bin/cmake) 

我已經檢查過,並且我有openssl 1.0和openssl 1.1。我已經用全新的android-studio重新安裝了我的操作系統,問題仍然存在。

感謝您的關注。

+0

我相信Android現在使用BoringSSL,而不是OpenSSL。隨意更改標籤。這條路徑看起來不正確:'/ usr/lib/libcrypto.so.1.0.0'。這通常是主機(您的PC)的'libcrypto'(和'libssl');不是目標機器(Android設備)。 – jww

+1

昨天更新了系統後,Arch上出現同樣的問題。只要運行'$/opt/android-sdk/cmake/3.6.3155560/bin/cmake',我就會收到錯誤消息。 – JonesV

+0

我感覺像'/ opt/android-sdk/cmake/3.6.3155560/bin/cmake'中的'cmake'二進制文件現在應該重新編譯,因爲我有一個新版本的libssl。但它似乎是由gradle安裝的,所以我不知道我是否可以自己構建它... – JonesV

回答

5

問題出在Android和0123ss之間,openssl-1.0.2.k-3。如果你在Arch Linux上是最新的,我相信你現在安裝了extra/openssl-1.0 1.0.2.k-3core/openssl 1.1.0.e-1。至少這是我的情況。

在這種情況下,剛剛降級openssl-1.0 1.0.2.k-3openssl-1.0 1.0.2.k-2如下:

注意:它爲我工作,但我不是一個拱門專家和降級一個包可以讓你的系統上的後果。自行承擔風險。

  1. 下載包here「的OpenSSL 1.0-1.0.2.k -2- x86_64.pkg.tar.xz」
  2. 降級到你剛剛下載了$ pacman -U openssl-1.0-1.0.2.k-2-x86_64.pkg.tar.xz
  3. 作爲包驗證,如果你運行pacman -Ss openssl-1.0,它應該告訴你:

    extra/openssl-1.0 1.0.2.k-3 [installed: 1.0.2.k-2]

當然再pacman -Syu將要再次更新openssl-1.0

UPDATE:截至今天(30-05-2017),它似乎是固定的。

+0

壓力保護程序!謝謝! –

4

爲了避免降級,您還可以像上面提到的那樣下載openssl-1.0-1.0.2.k-2-x86_64.pkg.tar.xz,解壓縮壓縮文件並將lib/files複製到/ usr/local/lib例如 rsync -avz /tmp/openssl-1.0-1.0.2.k-2-x86_64.pkg.tar/usr/lib//usr/local/lib

然後編輯Android Studio啓動腳本eg /opt/android-studio/bin/studio.sh並更改: LD_LIBRARY_PATH =「$ IDE_BIN_HOME:$ LD_LIBRARY_PATH」「$ JAVA_BIN」 至 LD_LIBRARY_PATH =「/ usr/local/lib:$ IDE_BIN_HOME:$ LD_LIBRARY_PATH」「$ JAVA_BIN「

+0

但這意味着您需要主動撤消這些更改才能獲得新版本的openssl-1.0,對吧?我認爲他們正在修復cmake bug(請參閱https://issuetracker.google.com/issues/37102629),所以在我的情況下,我會等待修復,然後更新openssl-1.0。但如果不想降級軟件包,這是一個很好的解決方法:-)。 – JonesV

+0

Android Studio更新它時會檢測到更改的啓動腳本,並詢問是否覆蓋它。 – HDM