1.先安装好flutter环境
去看官网即可
2.找到idea的Plugins 并安装三个插件
1)Flutter 2)Dart 3)Android
3.然后用idea点击创建android项目,这里主要是利用idea去安装android sdk
然后一直下一步,选择合适的android sdk安装,可能需要安装10-30分钟 安装好后会弹出android sdk的安装路径,/Users/yangjunxiong/Library/Android/sdk 这个是idea安装的android sdk的安装路径,下一步需要配置 android sdk环境变量
4.配置android sdk的环境变量 和flutter的android sdk配置
配置 android sdk环境变量 必须配置这个名称-> ANDROID_HOME
cd ~
vim .bash_profile
将下面的环境变量添加到 .bash_profile 最下面
# android
export ANDROID_HOME=/Users/yangjunxiong/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/build-tools
# android END
重载环境变量
source .bash_profile
配置 flutter的android sdk
flutter config --android-sdk /Users/yangjunxiong/Library/Android/sdk
查看是flutter否配置好安卓sdk
flutter doctor
5.通过这个安装 安卓模拟器 或者直接usb手机真机调试
6.安卓工程里面的build.gradle配置改maven仓库为阿里仓库
file:///Users/yangjunxiong/Desktop/yjx/work/yjx-gitee/demo/flutterapp1/android/build.gradle 主要是把 // google() // mavenCentral() 注销换成maven仓库
buildscript {
ext.kotlin_version = '1.6.10'
repositories {
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
7. 选择模拟器或者真机debug启动即可
8. flutter打包web端或android端优化
8.1 打包 web端
flutter build web
8.2 打包 web端打包 android端 so优化打包(减少10MB安装包体积)会打多个apk包 手机上用app.apk即可
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi
首先 flutter build apk 表示当前构建 release 包; 后面 android-arm,android-arm64,android-x64 则是指定生成对应架构的 release 包; 最后的 --split-per-abi 则表示告知需要按照我们指定的类型分别打包,如果移除则直接构建包含所有 CPU 架构的 Apk 包。
8.3 打包 web端打包 ios端
目前没有测试ios打包
8.4. AndroidManifest.xml 安卓的一些权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yjx.cloud.yjxrtc.yjx_rtc">
<application
android:label="这里改app的名称下面第9行改图片地址"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
</manifest>
|