【问题标题】:How to build Openssl for Android on Windows with ndk8?如何使用 ndk8 在 Windows 上为 Android 构建 Openssl?
【发布时间】:2013-01-02 02:41:18
【问题描述】:

我尝试下载OpenSSL-Android。然后运行 ​​ndk-build,在本例中为 ndk8c。

我得到错误:

process_begin: CreateProcess(NULL, pwd, ...) failed.
d:/Development/android/android-ndk-r8d/build/gmsl/__gmsl:512: *** non-numeric second argument to `wordlist' function: ''.  Stop.

当我按照here 的描述对 __gsml 应用修复时

我得到错误:

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: /Android.mk
d:/Development/android/android-ndk-r8c/build/core/add-application.mk:165: *** Android NDK: Aborting...    .  Stop.

或者有没有我可以下载的二进制文件?我基本上只需要 libcrypto.so。

这是我正在使用的 Android.mk:

LOCAL_PATH := $(call my-dir)

subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \
        crypto \
        ssl \
        apps \
    ))

include $(subdirs)

【问题讨论】:

  • 你能发布你的 Android.mk 吗?
  • 我用 Android.mk 更新了问题

标签: android windows build android-ndk openssl


【解决方案1】:

我使用了命令 dos2unix AndroidManifest.xml,它为我清除了错误。希望对你有帮助

【讨论】:

  • 这也解决了我的问题,Android 构建文件是 DOS 格式(在 Linux 上)!
  • 我已将项目从我的 m$ 转移到 a$,我遇到了同样的问题。这解决了问题。
【解决方案2】:

1.) 正如 Bad Design 正确指出的那样,__gsml 错误由以下 AndroidManifest.xml 修复

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.evotegra.aCoDriver"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14"
          android:targetSdkVersion="17"
          android:maxSdkVersion="17" />

</manifest>

2.) 错误:

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: /Android.mk

是线路造成的

APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk

在 jni/应用程序.mk 中。在 Windows 上,变量 $APP_PROJECT_PATH 未设置,因此它正在根目录中查找 Android.mk。

可以通过将文件 jni/Application.mk 更改为以下内容来解决此问题:

LOCAL_PATH := $(call my-dir)
NDK_TOOLCHAIN_VERSION=4.4.3
APP_PROJECT_PATH := $(shell pwd)
APP_BUILD_SCRIPT := $(LOCAL_PATH)/../Android.mk

【讨论】:

    【解决方案3】:

    如果运行ndk-build后出现以下错误:

    android-ndk-r8d/build/gmsl/__gmsl:512: *** non-numeric second argument to `wordlist' function: ''.  Stop.
    

    您应该在 AndroidManifest.xml 文件中至少添加“android:minSdkVersion”:

    <uses-sdk android:minSdkVersion="14"
              android:targetSdkVersion="17"
              android:maxSdkVersion="17" />
    

    如果你想修复第二个错误,我认为你应该从,$(addsuffix /Android.mk的“/Android.mk”中删除前导“/”

    编辑:在我将 AndroidManifest.xml 文件更改为如下内容后,我尝试从您链接的 Github 页面为 Android 项目构建 OpenSSL 库,并且它工作正常:

    注意:我在 GNU/Linux 发行版上使用 android-ndk-r8d,并从项目的根目录运行 ndk-build

    您不必删除前导的“/”。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.jp.algi"
          android:versionCode="1"
          android:versionName="1.0">
    
          <uses-sdk android:minSdkVersion="14"
              android:targetSdkVersion="17"
              android:maxSdkVersion="17" />
    
        <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
            <activity android:name="MyJpAndroidAppActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>
    

    【讨论】:

    • 我试过了,但没有成功。 Android.mk 中的相关行现在看起来 codesubdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix Android.mk, \#
    • 尝试使用以下命令构建文件。这将强制完全重建,并显示 ndk-build 脚本正在执行的命令。 (即详细模式)ndk-build -B V=1 还要确保您使用最新的 Android NDK - android-ndk-r8d
    • 使用清单修复了 __gsml 错误。但是这个愚蠢的丢失文件错误仍然存​​在。这是输出D:\Development\libs\openssl-android-master&gt;d:\Development\android\android-ndk-r8 d\ndk-build -B V=1 process_begin: CreateProcess(NULL, pwd, ...) failed. Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: /Android.mk d:/Development/android/android-ndk-r8d/build/core/add-application.mk:165: *** An droid NDK: Aborting... . Stop.
    • 在 Windows 上,将“/”es 替换为“\”es
    • 我尝试了subdirs := $(addprefix $(LOCAL_PATH)\,$(addsuffix Android.mk, \ subdirs := $(addprefix $(LOCAL_PATH)\,$(addsuffix \Android.mk, \ 但错误仍然存​​在
    猜你喜欢
    • 2012-10-11
    • 2018-01-11
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2012-02-22
    • 2023-03-23
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多