安卓(Android)版本的spring开发
介绍
安卓版spring,支持安卓前后端分离或者单体架构开发方式,前端采用熟悉的html、js甚至vue开发,java开发后台接口,好处是client可以是嵌入的webView,也可以是可访问安卓IP的浏览器,抛弃安卓原本的ui界面开发方式
项目地址
脚手架下载
软件架构
- 基于http服务的方式开发安卓应用程序;
- 包含ioc、mvc、orm、lifecycle、全局变量与监听和各种工具等;
- 支持的注解:Autowired、Bean、Component、Configuration、Controller、PostConstruct、Repository、RequestMapping、RequestParam、RuphyApplication、Service
- 线程统一管理
- 支持环境变量的模板解析
- 支持的spring初始化的生命周期依次:Init#create、ApplicationContextAware#setApplicationContext、Init#start、@PostConstruct
1.spring 代码结构
2. webview显示页面
3. 浏览器显示
使用说明
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.muphy.example" android:exported="true" android:installLocation="preferExternal"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.INTERNET" /> <permission android:name="com.machinebook.customer.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Example"> <service android:name="org.eclipse.paho.android.service.MqttService" /> <!--MqttService--> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.muphy.example.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> </provider> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
依赖
def room_version = "2.2.5" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" implementation 'com.alibaba:fastjson:1.1.54.android' implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' implementation 'com.faendir.rhino:rhino-android:1.6.0'
MainActivity.java