如何在Linux

时间:2016-01-01 09:53:08

标签: android linux ubuntu android-ndk freerdp

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,并尝试在maxSdkVersion中强制AndroidManifest.xml为21,但这没有帮助。编译日志:

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的Android SDK,但没有23级。 我备份了当前的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(它以某种方式间接导致错误 - 更准确地说,是目标23的24级兼容设施(满足目标21)),但目标是21。

(额外的问题:为什么谷歌下载旧的SDK会如此困难?我不得不弄乱并猜测网址)。

更新3:

我设法使用路线github.com/FreeRDP/FreeRDP/blob/master/docs/README.android

从Android Studio(v 1.5)调试aFreeRDP

2 个答案:

答案 0 :(得分:1)

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

更新: 我从一个完全更新的Android SDK开始,而且从14到17的minSdkVersion碰撞也没关系。使错误消失的唯一因素是从Android SDK内部侵入性地删除了values-v23目录。

注意: 汇编比一年/几年前更简单。 android_setup_build_env.sh负责下载和编译ssl库以及其他东西。

答案 1 :(得分:1)

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

参考链接: XXX / FreeRDP / FreeRDP /维基/编译 XXX / awakecoding / FreeRDP-手册/斑点/主/开发商/ FreeRDP-显像剂Manual.markdown 和其他来自互联网的帖子

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

需要重新设置新环境:

-Windows 7 Enterprise 64位(MAIN OS) -WMware WorkStation 10 -VM Ubuntu 15.10 Wily 64bit

使用NDK10e,JDK7,SDK23 ...

准备Ubuntu

shaun @ ubuntu:〜$ lsb_release -a 没有LSB模块可用。 分销商ID:Ubuntu 描述:Ubuntu 15.10 发布:15.10 代号:狡猾

安装JDK

sudo add-apt-repository ppa:webupd8team / java

sudo apt-get update

sudo apt-get install oracle-java7-installer

安装ANDROID NDK

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

./机器人-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

安装ANDROID 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 \ 构建必不可少的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

获取FreeRDP

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的

- >运行./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 = “/家/肖恩/主要/ FreeRDP /外部/ 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秒 client / 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工作,请告诉我。谢谢