簡體   English   中英

如何在 Android Posix 中實現 crypt() 和 wordexp.h

[英]How to implement crypt() and wordexp.h in Android Posix

我知道這兩個功能不是由 Bionics libc 實現提供的。 對於 C++ 到 Android 端口,我確實需要這些。 我怎么解決這個問題? 我不知道從哪里開始。

我收到這些錯誤消息:

error: unknown type name 'wordexp_t' error: use of undeclared identifier 'crypt'

有任何想法嗎?

完整的 BSD UNIX 確實提供了該類型和 function。 但是,在 Android 上沒有提供它們是有充分理由的。

wordexp_t用於 shell 樣式的單詞擴展。

crypt()用於 UNIX 密碼加密。 這不是任何一種通用加密; 它用於獲取輸入的密碼,創建 hash(因為這就是這種加密所做的),然后查看生成的字符串是否與 Z15395D0642F866C5992ABBCB2E 文件中的用戶密碼 hash 匹配。

Android,當然沒有用戶登錄系統,也沒有命令行(除非你加一個,或者使用ADB,這對於Android app用戶來說都不正常)。

因此,此類型和此調用的使用在您的庫中與 Android 無關的代碼中。 當您將軟件移植到一個非常不同的平台時,這樣的發現是司空見慣的。

正確解決此問題需要找出並了解源代碼中缺少的類型和 function 的用途。 當您了解它們的目的時,您將能夠確定 Android 是否需要它們,在這種情況下,它們需要被其他東西替換。

然后,您需要修改庫的源代碼,以便在它們存在的平台上使用它們,並在 Android 上使用其他東西。 通常最好重構代碼,以便(例如)您最終得到一個源文件,其中包含用於單詞擴展的特定於平台的代碼,以及另一個包含特定於平台的代碼用於密碼訪問的源文件。

好消息是,當您需要將相同的代碼移植到 iOS 時,此結構將為您提供良好的服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM