如何将 Scala 集成到核心 Android 平台中?

     2023-04-14     286

关键词:

【中文标题】如何将 Scala 集成到核心 Android 平台中?【英文标题】:How to integrate Scala into core Android platform? 【发布时间】:2011-03-26 13:17:54 【问题描述】:

我有兴趣将 Scala(或其他一些非 Java JVM 语言)集成到 android 平台中。我不是指用 Scala 编写一个 android 应用程序,我很早就这样做了,而是实际上挂钩到构建 android 平台源代码树的构建过程。我想这将是挂钩到 makefile 等的问题。有人对此有深入了解吗?

我目前所拥有的: 来自 git://android.git.kernel.org/platform/manifest.git 的平台源代码树以其原始形式构建,由“[下载并构建 Google Android][1]”

build/core/combo/scalac.mk # 配置scala编译器相关变量,包含在config.mk中 在 build/core/definitions.mk 中为 all-subdir-scala-files 和 all-scala-files-under 添加了定义 在 definitions.mk 中添加了定义以构建 scala 文件,以便它们包含在包中

剩下的:

包括 scala-library.jar 确保对 -bootclasspath 的更改没有破坏任何内容 弄清楚如何处理 scala 类依赖于 java 类的情况,反之亦然 代码的主要清理 测试中! 弄清楚我所做的更改要做什么(不仅仅是在此处发布)

看来我快到了!!!

过去的一些笔记

最新:我找到了Java源文件的编译位置!在 definitions.mk 中,请参阅“定义 transform-java-to-classes.jar”。最新的想法是编写一个 transform-scala-to-classes 定义,然后让它直接将这些类存储在被打包的目录中。我将在 transform-java-to-classes.jar 中的这一步之前调用 transform-scala-to-class。对 eclipse 和 cygwin 的支持现在将被放弃,因为它用变通方法弄乱了代码,因此增加了我失败的机会。

构建过程由运行 build/core/main.mk 的根 Makefile 开始 build/core/main.mk 包括 build/core/config.mk,其中包括 build/core/combo/javac.mk,它设置 HOST_JAVAC、TARGET_JAVAC 和 COMMON_JAVAC。 COMMON_JAVAC 是“带有公共参数的 Java 编译器命令”,从外观上看,其他两个变量默认获取这些值,除非在特殊环境(openjdk 或 eclipse)中。 COMMON_JAVAC 不在此文件之外使用。其他两个仅在 build/core/definitions.mk 中使用。

build/core/java_library.mk(包含在 config.mk 中)似乎只关心构建 jar。这超出了我们关心的范围。与 jar 的任何交互都以类文件为前提,这些文件假设我们已经成功构建了 scala 文件。

在 main.mk 中有关于 java 版本的检查。我们将忽略这些并假设我们的 scala 版本是兼容的。现在(在 combo/scalac.mk 中)我正在使用与 javac.mk 中相同的 --target arg。这也许应该存储在一个变量中。

main.mk 还包括 build/core/definitions.mk,它依次定义了一些有用的功能。这里我们关心的是 all-java-files-under 和 all-subdir-java-files。后者在 Android.mk 文件中用于查找 java 文件。前者用于后者的实现。我将编写它们的 Scala 等价物。

为了弄清楚构建过程是如何工作的,我现在使用 -n 和其他命令运行 make。我从 *** 文章“[调试 makefile 的工具][2]”中得到了这个想法。我也在研究使用 remake 进行调试。

build/core/config.mk, definitions.mk 让我们了解哪些 make 文件/命令用于做什么。

作为在每个项目基础上获取支持的一种可能方式,很可能会将其他代码添加到项目的 Android.mk 文件中。从 platform/build/core/build-system.html 我们读到“Android.mk 是控制给定模块构建的 makefile 片段的标准名称。只有顶层目录应该有一个名为“Makefile”的文件。”您可以创建一个像“scala-build”这样的新目标并在最终制作之前运行它(make PackageName scala-build)。或许还可以将它偷偷地隐藏在变量赋值中,从而减少显式调用目标的需要。

另一种方法(更骇人听闻)是劫持用于 javac 的命令。这是在 build/core/combo/javac.mk 中设置的。您项目的 Android.mk 必须在 LOCAL_SRC_FILES 中包含 *.scala 文件以及 *.java 文件。

【问题讨论】:

我会在 android building 邮件列表中询问这个问题。 groups.google.com/group/android-building 【参考方案1】:

reddit 上的人说,有一个使用 ant here 将 Scala 集成到 Android 的教程。

【讨论】:

我会试试这个。谢谢! @Octoberdan 如果你能通知这个线程你的进度,那真是太酷了。 我周末出去了,但刚回来。直到明天我才有时间试一试。我一定会让你知道的! 其实这不是我想要的。我正在寻找将它集成到平台本身的构建系统中。还是谢谢你!

如何将 Amazon Alexa SDK 集成到 Android 应用程序?

】如何将AmazonAlexaSDK集成到Android应用程序?【英文标题】:HowtointegrateAmazonAlexaSDKtotheandroidapp?【发布时间】:2019-02-1616:03:54【问题描述】:谁能告诉我如何将AlexaAVSSDK集成到android应用程序。我已经搜索了很长时间,但没有得到关... 查看详情

Android:如何将解码器集成到多媒体框架

】Android:如何将解码器集成到多媒体框架【英文标题】:Android:Howtointegrateadecodertomultimediaframework【发布时间】:2013-02-2609:20:04【问题描述】:最近我成功地将视频解码器移植到了android。还将输出转储到表面视图并使用本机API检... 查看详情

如何将 Paytm 钱包集成到 Android 应用程序中? [关闭]

】如何将Paytm钱包集成到Android应用程序中?[关闭]【英文标题】:HowdoIintegratePaytmwalletinanAndroidapplication?[closed]【发布时间】:2015-03-2021:05:51【问题描述】:我想将Paytm钱包作为支付选项集成到Android应用程序中,就像在Uber应用程序... 查看详情

如何将 twilio 集成到 react native for android?

】如何将twilio集成到reactnativeforandroid?【英文标题】:Howtointegratetwilioinreactnativeforandroid?【发布时间】:2017-01-3121:29:21【问题描述】:我正在使用reactnative构建需要twilio集成的Android移动应用程序。我使用了npmrepo中的示例代码。.ht... 查看详情

您将如何将 ClearCase 集成到我们的 Android 应用程序开发中? [关闭]

】您将如何将ClearCase集成到我们的Android应用程序开发中?[关闭]【英文标题】:HowwouldyouintegrateClearCaseinourAndroidAppdevelopment?[closed]【发布时间】:2011-07-1619:36:05【问题描述】:我的朋友和我同时在EclipseIDE3.6-Win7操作系统上开发Andro... 查看详情

如何使用 webview 将 paypal 集成到 android 应用程序

】如何使用webview将paypal集成到android应用程序【英文标题】:Howtointegratepaypaltoandroidappusingwebview【发布时间】:2013-05-1019:22:54【问题描述】:我想将paypal集成到我的应用程序中。在我看到这个之前,我已经快到了:https://developer.pa... 查看详情

如何在 Android 中水平滚动 ImageView?

】如何在Android中水平滚动ImageView?【英文标题】:HowtoscrollImageViewhorizontalinAndroid?【发布时间】:2019-01-2503:59:42【问题描述】:在我的应用程序中,我想将图像从服务器显示到ImageView。我的imageView填满整个屏幕,为此我使用android... 查看详情

如何将外部库集成到 Cocos Android 项目中

】如何将外部库集成到CocosAndroid项目中【英文标题】:HowtointegrateexternalLibrariesintoCocosAndroidProject【发布时间】:2018-06-2417:57:58【问题描述】:我想制作一款使用C++构建并使用Lua编写脚本的游戏。为此,我制作了自己的Lua引擎。对... 查看详情

请告诉我如何将黑莓和android集成到同一个IDE中。

】请告诉我如何将黑莓和android集成到同一个IDE中。【英文标题】:PleasetellmehowtointegrateblackberryandandroidintothesameIDE.【发布时间】:2011-01-2314:29:28【问题描述】:我正在使用phoneGap作为开发代码的环境。所以我需要知道如何将黑莓... 查看详情

如何将 ZXing 库集成到 Android Studio 进行条码扫描?

】如何将ZXing库集成到AndroidStudio进行条码扫描?【英文标题】:HowtointegrateZXingLibrarytoAndroidStudioforBarcodeScanning?【发布时间】:2015-03-0705:45:19【问题描述】:我一直在互联网上寻找如何将zxing库包含到我的项目中,我找到了这个教... 查看详情

如何将 React-Native 项目集成到 Android-Studio?

】如何将React-Native项目集成到Android-Studio?【英文标题】:HowtoIntegratetheReact-NativeprojecttoAndroid-Studio?【发布时间】:2017-06-2409:16:42【问题描述】:我曾尝试将react-native项目导入到androidstudio,但“index.android.js”文件未显示在android-s... 查看详情

如何减少 android 的 scala 应用程序的文件大小?

】如何减少android的scala应用程序的文件大小?【英文标题】:Howcanscalaapplicationsforandroidbereducedinfilesize?【发布时间】:2012-02-0217:52:41【问题描述】:我正在尝试在Eclipse中使用Scala编写Android应用程序。我遇到的问题是部署的APK文件... 查看详情

如何将三星 Gear Steps 集成到 Android 应用程序中?

】如何将三星GearSteps集成到Android应用程序中?【英文标题】:HowtointegrateSamsungGearStepsinandroidApplication?【发布时间】:2017-03-0703:10:37【问题描述】:我想在我的应用程序中集成SamsungGear设备的步骤,还有颚骨步骤和不合适的步骤。... 查看详情

从结构中删除后,如何将 twitter 集成到 android 中以进行 twitter 登录?

】从结构中删除后,如何将twitter集成到android中以进行twitter登录?【英文标题】:howtointegratetwitterinandroidfortwitterloginafterit\'sremovalfromfabric?【发布时间】:2017-12-0223:48:15【问题描述】:我正在尝试集成twitter登录。twitter的登录按钮... 查看详情

android6.0如何将supersu的root权限管理功能集成到系统源码里面

...;使系统自带root权限管理功能。在此总结一下集成SuperSU到Android源码中需要注意的几个要点:1.设置selinux为disable或者permissive模式;2.设置ro.secure=0;3.将superuser.apk预置到system/app目录下;4. 查看详情

如何将来自 AWS Mobile Hub 示例项目的推送服务集成到现有的 android 项目中?

】如何将来自AWSMobileHub示例项目的推送服务集成到现有的android项目中?【英文标题】:HowtointegratepushservicesfromAWSMobileHubsampleprojectinanexistingandroidproject?【发布时间】:2016-09-0209:38:12【问题描述】:我使用AWSMobileHub和用户登录和推... 查看详情

我们如何将直播电视(无互联网)集成到可以在 Android 迷你 PC 上运行的 Android 应用程序中?

】我们如何将直播电视(无互联网)集成到可以在Android迷你PC上运行的Android应用程序中?【英文标题】:HowcanweintegratelivedishTV(nointernet)intoanandroidappwhichcanberunonanAndroidminiPC?【发布时间】:2016-12-2017:54:09【问题描述】:我开发了一... 查看详情

如何在没有 Facebook、Twitter 等的情况下将社交功能集成到 iOS 和/或 Android 应用程序中?

...没有Facebook、Twitter等的情况下将社交功能集成到iOS和/或Android应用程序中?【英文标题】:HowcanIintegratesocialfeaturesintoiOSand/orAndroidappswithoutFacebook,Twitter,etc.?【发布时间】:2011-11-2208:15:43【问题描述】:我正在尝试评估将社交功能... 查看详情