我正在用android平台构建应用程序。想要设计一个服务器端的akka应用程序,它将以分布的方式向android应用程序提供服务。两个系统都被设计为独立的应用程序是否有可能连接akka远程服务器与android应用程序。请帮助我,因为我对akka和android都很陌生。将android应用程序与akka远程服务器连接
回答
我不确定您是否在考虑使用Akka远程协议,但如果是我,我会考虑查看优秀的HTTP + REST库Spray(http://spray.io/)。我玩过这个库,它非常漂亮。它与Akka很好地集成,并允许您为您的服务提供REST API。作为奖励,使用REST还可以让您获得与Android前端以外的其他产品轻松集成的服务。
我已经包含了几条链接作为起点。编写REST客户端Android应用程序的谷歌2010 I/O谈话是特别有趣:
http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html http://www.techrepublic.com/blog/app-builder/calling-restful-services-from-your-android-app/1076
你可以这样做,但你会受到影响。
你必须以某种方式能够从android应用程序访问akka-remote和依赖关系(netty,scala)的类定义。这可能是有问题的,因为依赖关系的总和超过了65536个Dalviks上限的方法。 (也就是说 - 您的classes.dex
文件在apk中不能有比65536更多的方法定义)。
AFAIK,有三种主要的方法:
- 分手了依赖成单独apklibs,使您的APK依赖于这些。
- 我不能真正推荐这个,因为我没有尝试过。
- 将依赖关系拆分为单独的classes.dex文件,您可以从应用程序中以编程方式加载。
- 可能是可行的。从未尝试过。包装你的classes.dex
- 前
- 运行proguard的你将不得不使用ProGuard战斗来获得配置的权利,你可能会得到奇怪的运行时故障。我的配置张贴在下面。
- 可能是可行的。从未尝试过。包装你的classes.dex
一旦你阿卡远程启动和运行在Android设备上,你可以连接到服务器就像在文档中的示例。但是,请记住:
- 您的Android设备的IP可能在启动时可用,也可能不可用,因此您可能不希望保留akka配置的那部分动态(尚未完成此操作我)。
- 您的Android设备的IP可能无法从服务器访问。所以如果你进入服务器需要调用客户端的状态,它永远不会成功。
我proguard.cfg(并不需要一些线路 - 没有打扰找出哪些):
-dontoptimize
#-optimizationpasses 2
-dontobfuscate
-dontpreverify
-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses
-dontnote **
-verbose
-keep class com.typesafe.config.Config { *; }
-keep class com.typesafe.config.ConfigFactory { *; }
-keep class org.slf4j.Logger { *; }
-keep class org.slf4j.LoggerFactory { *; }
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#Scala
-dontwarn scala.**
-keepclassmembers class * {
** MODULE$;
}
-keep class scala.Option
-keep class scala.Function1
-keep class scala.PartialFunction
#https://issues.scala-lang.org/browse/SI-5397
-keep class scala.collection.SeqLike {
public protected *;
}
-keep class scala.Tuple*
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
-keep class * implements org.xml.sax.EntityResolver
-keepclassmembers class * {
** MODULE$;
}
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool { *; }
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinWorkerThread {
int base;
int sp;
int runState;
}
-keepclassmembernames class scala.concurrent.forkjoin.ForkJoinTask {
int status;
}
-keepclassmembernames class scala.concurrent.forkjoin.LinkedTransferQueue { *; }
#Akka
-dontwarn org.jboss.netty.logging.**
-dontwarn org.osgi.**
-dontwarn javax.servlet.**
#-dontwarn org.jboss.netty.channel.socket.http.**
## Unsafe is there at runtime
-dontwarn sun.misc.Unsafe
-keep class sun.misc.Unsafe{
*;
}
-keep class akka.** { *; }
-keep class com.google.protobuf.GeneratedMessage {
*;
}
-keep class org.javatuples.** { *; }
-keep class org.jboss.**
-dontwarn org.jboss.netty.handler.codec.marshalling.**
-dontwarn org.jboss.netty.channel.socket.nio.**
-dontwarn org.jboss.netty.handler.codec.compression.JdkZlibEncoder
-dontwarn org.jboss.netty.handler.codec.spdy.SpdyHeaderBlockZlibCompressor
-dontwarn org.jboss.netty.channel.socket.http.HttpTunnelingServlet
-dontwarn org.jboss.modules.**
-dontwarn __redirected.**
-dontwarn org.slf4j.LoggerFactory
-dontwarn org.slf4j.MarkerFactory
-dontwarn org.slf4j.MDC
-dontwarn org.slf4j.impl.AndroidLogger
-dontwarn org.slf4j.impl.AndroidLoggerFactory
好运。
在Android上使用Spray也可能会遇到[此处]描述的问题(http://code.google.com/p/android/issues/detail?id=22586)。 –
- 1. 将Android应用程序连接到远程应用程序服务器
- 2. 连接到远程服务器的Android应用程序
- 3. 在android应用程序中的远程服务器连接
- 4. Akka远程连接
- 5. 如何将我的Android应用程序连接到远程Web服务器
- 6. 将Android应用程序连接到远程服务器上的数据库
- 7. 应用程序连接到远程服务器
- 8. 点击一次应用程序连接到远程服务器
- 9. 远程服务器,PHP,MySQL连接在iPhone应用程序内
- 10. VB6连接到远程mySQL服务器挂起应用程序
- 11. 将Android应用程序连接到服务器上的Matlab应用程序
- 12. 连接到远程iis服务器2012以远程调试Web应用程序
- 13. Android应用程序与远程服务器后端?
- 14. 如何将Android应用程序与amf web服务连接?
- 15. Android应用程序与服务器的连接速度很慢
- 16. Android应用程序建立与服务器的连接?
- 17. 连接Java小程序与远程(?)mysql服务器
- 18. 是否可以从Android应用程序连接到.NET远程服务器?
- 19. Android应用程序和远程MS SQL服务器之间的连接
- 20. 如何使android应用程序更快地连接到远程服务器
- 21. 将Android应用程序连接到Xamppp服务器
- 22. 将android应用程序连接到服务器?
- 23. 将Android应用程序连接到Gmail服务器
- 24. 将Android应用程序连接到PHP服务器
- 25. 将Android应用程序连接到Web服务器数据库
- 26. 将android应用程序连接到服务器数据库
- 27. 将服务器连接到我的Android应用程序
- 28. Android应用程序将无法连接到服务器
- 29. 通过JSON将Android应用程序连接到Java服务器
- 30. 将Android应用程序连接到HTTP服务器
谢谢xbones会尽力回复你 –
这样的幸运吗?我一直无法让Spray在Android上工作,也没有找到任何其他人这样做的证据。 –