java2pas操作说明_NOTES.ANDROID

NOTES FOR ANDROID PLATFORMS

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

Requirement details

-------------------

Beside basic tools like perl and make you'll need to download the Android

NDK. It's available for Linux, Mac OS X and Windows, but only Linux

version was actually tested. There is no reason to believe that Mac OS X

wouldn't work. And as for Windows, it's unclear which "shell" would be

suitable, MSYS2 might have best chances. NDK version should play lesser

role, the goal is to support a range of most recent versions.

Configuration

-------------

Android is naturally cross-compiled target and you can't use ./config.

You have to use ./Configure and name your target explicitly; there are

android-arm, android-arm64, android-mips, android-mip64, android-x86

and android-x86_64. Do not pass --cross-compile-prefix (as you might

be tempted), as it will be "calculated" automatically based on chosen

platform. Though you still need to know the prefix to extend your PATH,

in order to invoke $(CROSS_COMPILE)gcc and company. (Configure will fail

and give you a hint if you get it wrong.) Apart from PATH adjustment

you need to set ANDROID_NDK_HOME environment to point at NDK directory

as /some/where/android-ndk-. Both variables are significant at both

configuration and compilation times. NDK customarily supports multiple

Android API levels, e.g. android-14, android-21, etc. By default latest

one available is chosen. If you need to target older platform, pass

additional -D__ANDROID_API__=N to Configure. N is numeric value of the

target platform version. For example, to compile for ICS on ARM with

NDK 10d:

export ANDROID_NDK_HOME=/some/where/android-ndk-10d

PATH=$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH

./Configure android-arm -D__ANDROID_API__=14

make

Caveat lector! Earlier OpenSSL versions relied on additional CROSS_SYSROOT

variable set to $ANDROID_NDK_HOME/platforms/android-/arch- to

appoint headers-n-libraries' location. It's still recognized in order

to facilitate migration from older projects. However, since API level

appears in CROSS_SYSROOT value, passing -D__ANDROID_API__=N can be in

conflict, and mixing the two is therefore not supported. Migration to

CROSS_SYSROOT-less setup is recommended.

One can engage clang by adjusting PATH to cover same NDK's clang. Just

keep in mind that if you miss it, Configure will try to use gcc...

Also, PATH would need even further adjustment to cover unprefixed, yet

target-specific, ar and ranlib. It's possible that you don't need to

bother, if binutils-multiarch is installed on your Linux system.

Another option is to create so called "standalone toolchain" tailored

for single specific platform including Android API level, and assign its

location to ANDROID_NDK_HOME. In such case you have to pass matching

target name to Configure and shouldn't use -D__ANDROID_API__=N. PATH

adjustment becomes simpler, $ANDROID_NDK_HOME/bin:$PATH suffices.

Running tests (on Linux)

------------------------

This is not actually supported. Notes are meant rather as inspiration.

Even though build output targets alien system, it's possible to execute

test suite on Linux system by employing qemu-user. The trick is static

linking. Pass -static to Configure, then edit generated Makefile and

remove occurrences of -ldl and -pie flags. You would also need to pick

API version that comes with usable static libraries, 42/2=21 used to

work. Once built, you should be able to

env EXE_SHELL=qemu- make test

If you need to pass additional flag to qemu, quotes are your friend, e.g.

env EXE_SHELL="qemu-mips64el -cpu MIPS64R6-generic" make test

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值