1

aFreeRDP 是 FreeRDP 项目的 Android 客户端。

我正在使用 64 位 Ubuntu 15.04 Vivid。

我的目标是编译一个FreeRDP。我在终点线,但无法越过它。我成功安装了所需的包,Android NDK,然后编译了外部 openssl(android shell 脚本自动执行此操作)。然后我生成了make文件。有趣的是

cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DANDROID_SDK=/home/csaba/android-sdk-linux

也不

cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=/home/csaba/android-ndk -DFREERDP_EXTERNAL_SSL_PATH=/home/csaba/GitRepos/FreeRDP/external/openssl -DCMAKE_BUILD_TYPE=Debug -DANDROID_BUILD_JAVA=OFF -DANDROID_SDK=/home/csaba/android-sdk-linux -DFREERDP_EXTERNAL_JPEG_PATH=/home/csaba/GitRepos/FreeRDP/external/jpeg8d

产生了任何apk,但他们高兴地编译libfreerdp-android.so

我需要一个apk,所以我去了client/Android/aFreeRDP,因为我在build.xml那里有一个,我说ant build install。构建过程开始了,但在资源编译阶段结束了。我有当前的 23 级 android 构建工具和与 Android SDK 配套的东西。我在源代码中看到,源代码最初是针对 21 级的。我也添加了 21 级 SDK,并尝试在maxSdkVersion21 中强制执行AndroidManifest.xml,但这没有帮助。编译日志:

http://pastebin.com/Nc0mqGrQ

正如您在资源错误后看到的

 [aapt] Generating resource IDs...
 [aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base.xml:20: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
 [aapt]
 [aapt] /home/csaba/GitRepos/FreeRDP/client/Android/appcompat_v7/res/values-v23/styles_base_text.xml:19: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
 [aapt]

它死了

BUILD FAILED
/home/csaba/android-sdk-linux/tools/ant/build.xml:597: The following error occurred while executing this line:
/home/csaba/android-sdk-linux/tools/ant/build.xml:649: The following error occurred while executing this line:
/home/csaba/android-sdk-linux/tools/ant/build.xml:694: null returned: 1

21级和23级资源对比,21级的东西要多得多,23级只有单条,很模糊。我怎样才能解决这个问题?让我知道我应该发布哪些文件。


更新1:

摆脱 ADT 的一个恼人问题,它也可能影响这个错误:Eclipse Error: Error parsing ...\android-22\android-wear\armeabi-v7a\devices.xml 不幸的是卸载 Wear 图像导致 ADT 错误消失,但aFreeRDP编译错误仍然存​​在。


更新 2:我试图回到过去,我的目标是拥有一个提供 21,但没有级别 23 的 Android SDK。我备份了我当前的 Android SDK。SDK 下载 tgz 22.6.2 ( https://dl.google.com/android/android-sdk_r22.6.2-linux.tgz ) 仅提供目标 21。但 SDK 下载 tgz 23.0.0 ( https://dl.google. com/android/android-sdk_r23-linux.tgz)已经想升级到 24。所以当我没有目标 23 时,我无法让系统进入状态(这会以某种方式间接导致错误 - 更准确地说,级别24 对目标 23 的兼容性设施(满足目标 21)),但具有目标 21。

(额外的问题:为什么谷歌很难下载旧的 SDK?我不得不摆弄和猜测 URL)。


更新 3:

我设法使用 github.com/FreeRDP/FreeRDP/blob/master/docs/README.android 的说明从 Android Studio (v 1.5) 调试 aFreeRDP

4

2 回答 2

1

我从 23.0 SDK tgz 开始,升级了一轮(不升级到 Android 6.0)。然后从 Android SDK 复制麻烦的 xml 文件。所以我从 SDK 中删除了 values-v23 文件夹。我还修改了 aFreeRDP 的 AndroidManifest.xml 并将 minSdkVersion 从 14 设置为 17。目录删除当然有帮助,我不确定其他两个步骤是否有帮助,但我现在有一个 apk。我认为这是一个丑陋的黑客,不过只是一种解决方法。因为所以我暂时不会将此标记为答案。


更新:我从一个完全更新的 Android SDK 开始,从 14 到 17 的 minSdkVersion 提升也无关紧要。唯一使错误消失的是从 Android SDK 内部侵入性地删除了该 values-v23 目录。


注意:编译比一年/几年前更简单。android_setup_build_env.sh 负责下载和编译 ssl 库和其他内容。

于 2016-01-02T02:03:12.807 回答
1

我想发布相同的主题,但你已经做了一个,所以我会在这里发布。它应该是评论,但我没有 50 的声誉可以评论,所以我在这里回答:注释:(xxx = https://github.com在这篇文章中)

参考链接:xxx/FreeRDP/FreeRDP/wiki/Compilation xxx/awakecoding/FreeRDP-Manuals/blob/master/Developer/FreeRDP-Developer-Manual.markdown 和其他来自互联网的帖子

目标:为 Android 设备构建一个FreeRDP。2 年前,我曾经为 Ubuntu 12 / 14 构建它,但现在构建已损坏。

需要重新设置一个新环境:

-Windows 7 Enterprise 64 位(主操作系统)-WMware WorkStation 10 -VM Ubuntu 15.10 Wily 64 位

使用 NDK10e、JDK7、SDK23 准备 Ubuntu...

shaun@ubuntu:~$ lsb_release -a 没有可用的 LSB 模块。发行商 ID:Ubuntu 描述:Ubuntu 15.10 发行版:15.10 代号:wily

安装 JDK

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get 更新

sudo apt-get install oracle-java7-installer

安装安卓 NDK

chmod a+x android-ndk-r10e-linux-x86_64.bin

./android-ndk-r10e-linux-x86_64.bin

sudo chown -R root:root /home/shaun/Main/android-ndk-r10e

sudo mv /home/shaun/Main/android-ndk-r10e /opt

导出 NDK=/opt/android-ndk-r10e

安装安卓 SDK

下载并解压android-sdk_r23.0.2-linux.tgz

sudo mv /home/shaun/Main/android-sdk-linux /opt/android-sdk

shaun@ubuntu:/opt/android-sdk/tools$ ./android

安装依赖 GIT / CMAKE / GCC

sudo apt-get install \ build-essential git-core cmake \ libssl-dev \ libx11-dev libxext-dev libxinerama-dev libxcursor-dev libxkbfile-dev \ libxv-dev libxi-dev libxdamage-dev libxrender-dev libxrandr-dev \ libasound2-dev libcups2-dev libpulse-dev \ libavutil-dev libavcodec-dev \ libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libcunit1-dev libdirectfb-dev xmlto doxygen libxtst-dev

sudo apt-get install lib32stdc++6

sudo apt-get install lib32z1

获取免费RDP

git clone git://github.com/FreeRDP/FreeRDP.git cd FreeRDP

添加路径

shaun@ubuntu:~$ gedit ~/.bashrc export ANDROID_NDK=/opt/android-ndk-r10e export ANDROID_SDK=/opt/android-sdk export FREERDP_EXTERNAL_SSL_PATH=/home/shaun/Main/FreeRDP-master/external/Android-external -openssl-ndk-static export PATH=$PATH:$FREERDP_EXTERNAL_SSL_PATH export PATH="$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK"

从 FreeRDP-->run ./scripts/android_setup_build_env.sh --> 查看长输出 .... 最后您会看到: 准备好的外部库,您现在可以构建应用程序。

最后运行:

cmake -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake -DANDROID_NDK=$ANDROID_NDK -DANDROID_SDK=$ANDROID_SDK -DFREERDP_EXTERNAL_SSL_PATH=$FREERDP_EXTERNAL_SSL_PATH -DFREERDP_EXTERNAL_JPEG_PATH="/home/shaun/Main/FreeRDP/external/jpeg8d" -DANDROID_NATIVE_API_LEVEL:STRING=L -DCMAKE_MAKE_PROGRAM= $ANDROID_NDK/prebuilt/linux-x86/bin/make -DCMAKE_BUILD_TYPE=Debug -DANDROID_BUILD_JAVA=OFF -L。制作

在这个制作之后,我拥有了我需要的所有库,但仍然没有 APK:...

...长输出....总时间:2 秒客户端/Android/aFreeRDP/CMakeFiles/android-package.dir/build.make:50:目标'client/Android/aFreeRDP/bin/aFreeRDP-debug 的配方。 apk' 失败 make[2]: * [client/Android/aFreeRDP/bin/aFreeRDP-debug.apk] 错误 1 ​​CMakeFiles/Makefile2:2494: 目标'client/Android/aFreeRDP/CMakeFiles/android-package.dir/ 的配方all' 失败 make[1]: * [client/Android/aFreeRDP/CMakeFiles/android-package.dir/all] 错误 2 Makefile:136: 目标 'all' 的配方失败 make: *** [all] 错误 2

===========================

导入到 ECLIPSE 并成功从 Eclipse 构建——APK 和应用程序再次在我的所有设备上运行,并具有新功能最先进的功能是麦克风重定向也可以工作 :-)

但是在ANDROID STUDIO中仍然无法使用,仍在尝试:(,如果您在AS中可以使用,请告诉我。谢谢

于 2016-01-21T15:55:09.787 回答