我正在用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上工作,也沒有找到任何其他人這樣做的證據。 –