山寨是王道--外平台JAVA项目到android的移植
来源:互联网 发布:淘宝 天衣无缝 墙布 编辑:程序博客网 时间:2024/06/13 03:53
很多时候,我们需要将其他平台已经成型的java应用直接空降到android平台之上,管他是X86(PC)还是SUN的,我们不想费那劲改一大堆代码,但是偏偏这些Java应用用到了很多native的库还有一大堆android为了省事没有支持的服务, how can we do?
首先我们明确,所有的应用无论多眩,到最后都是JVM(对android来说,是dalvik)上的一堆烂代码class.dex--参看我以前的博文,另外,为了达到变成烂代码的目的,我们需要做一个android apK的框框,这个下个eclipse,再来个android sdk谁都有。另外还需要什么呢?为了应用畅行无阻,我们还需要个合适的签名文件。 O了。
天幸Java和androidSDK 提供了所有必须的工具。
一,进入所有引用到的库或者服务,用ARM交叉编译和ant狠狠折磨他,目的是变成android可认的JAR包。(说起来容易,做起来难)
以JNA为例--目前android Java与native code的接口只支持JNI,不支持只在Java操作的JNA。这是android源自我Linux山门的一个有力证据。
#Jna
cd $JNA_PATH
ant -Djre.arch=arm -Dos.arch=arm -Dos.prefix=linux-armv7l
cp build/jna.jar $JAR_PATH
#cp build/native/libjnidispatch.so $LIB_PATH/armeabi/
二,同理'ant"你的主程序。
#Java control
ant
cp $CALLCONTROL_PATH/build/dist/XXX.jar $JAR_PATH/.
cp $H323STACK_PATH/build/dist/XXXX.jar $JAR_PATH/.
cp $CALLCONTROL_PATH/build/dist/lib/android/libXXXX_android.a $LIB_PATH/armeabi/
三,android框框
#android skeleton
javac -encoding GB18030 -bootclasspath $ANDROID_FILES -cp $JAR_PATH/XXX.jar:$JAR_PATH/XXXX.jar -d $BIN_PATH $ANDROID
四,把所有的大杂烩融到一起。生成class.dex.
#get class.dex
dx --dex --output=class.dex $BIN_PATH $JAR_PATH/
五,加上android apk必须的resource.
# get resource
aapt package -M $BUILD_PATH/AndroidManifest.xml -A $BUILD_PATH/assets/ -S $BUILD_PATH/res/ -I $ANDROID_FILES -f -F byreader
六, 来吧,生成个原始的apk.
# get a raw apk
apkbuilder control.apk -u -z byreader -f class.dex -nf $LIB_PATH -rj $JAR_PATH/jna.jar
七, 别忘了加上通行证--签名。
#sign. get the last apk
java -jar $SIGN_FILES control.apk control-app.apk
其中的SIGN_FILES 就是signapk.jar platform.x509.pem platform.pk8。
大功告成。《《《《---亲个嘴儿--》》》
特此声明:上述步骤只做参考,帮助理解,如直接拷贝用做项目,一切后果概不负责。
- 山寨是王道--外平台JAVA项目到android的移植
- cocos2dx项目移植到android平台
- 移植Cocos2D到Android平台的原理
- 移植android代码到powerpc平台,在这个平台的支持实在是少之又少,艰辛的踏着每一步...
- Cocos2dx之使用cygwin移植win32项目到Android平台
- cocos2d-x 3.0 win32项目移植到android平台
- 项目移植到android平台流程(cocos2dx3.0)
- 移植开源项目obexftp到android平台下实现蓝牙ftp的功能
- [图文]为移植到Android平台上的Cocos2d-x项目添加xml布局文件
- 移植Busybox到Android平台
- ffmpeg移植到android平台
- FFmpeg 移植到 Android 平台
- srtp移植到android平台
- gloox移植到android平台
- FFmpeg 移植到 Android 平台
- 移植DynamixelSDK到Android平台
- tensorflow 移植到android平台
- Cocos2dx项目移植Android平台
- 初识----浏览器插件开发
- 在Eclipse3.4中安装Ext和删除Spket以及不能自动提示问题的解决总结
- 复杂就是简单的多态叠加--处理多级子目录的Makefile
- 关于Excel数据导入Mysql的问题
- javascript 支持中英文字符串截取函数
- 山寨是王道--外平台JAVA项目到android的移植
- IBM Lotus Symphony V3 成功发布
- 分布式事务简介
- 信令分析工具,Abis,A口,GB口数据解码,信令流程关联
- CONNECT BY PRIOR... START WITH
- 面向程序员的数据库访问性能优化法则
- 萝卜和青菜--Android camera框架与使用
- 支持软件正版化,选择Lotus Symphony V3
- 记事的价值