最近做一个项目,开始以为app只是一个开机自启动的程序.后来发现其实是需要app完全覆盖设备,即开机就显示自己的app且设备运行期间只能展示自己的app.
在网上找了一圈想用uniapp暂时是不能实现了,于是就想到了用原生Android中
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
将应用变成launcher程序,结合uniapp通过离线打包实现
**uniapp端**
- 创建uniapp项目
2.HbuilderX制作自定义基座
Android签名证书生成指南:https://ask.dcloud.net.cn/article/35777
3.获取app-sha1和包名
安装Android包名sha1获取apk:链接: https://pan.baidu.com/s/1kFcJoQQTbJanp1TzoAfRrw 提取码: whyh 复制这段内容后打开百度网盘手机App,操作更方便哦
- dcloud开发者中心-配置离线打包key管理
Android端
- 创建Android项目
2.导入sdk里面的包
app离线打包sdk下载地址https://nativesupport.dcloud.net.cn/AppDocs/download/android
- 创建对应文件夹到对应位置
- 将sdk中的assets下的data下的文件放到对应目录下
- 修改AndroidManifest.xml
代码:
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@style/TranslucentTheme"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntryActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"
android:hardwareAccelerated="true"
android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
android:screenOrientation="user"
android:theme="@style/DCloudTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="h56131bcf" />
</intent-filter>
</activity>
<provider
android:authorities="com.kuaikefu.androidlauncher.dc.fileprovider"
android:name="io.dcloud.common.util.DCloud_FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/dcloud_file_provider"/>
</provider>
<meta-data
android:name="dcloud_appkey"
android:value="你的开发者中心生成的app key" />
6.添加对应代码
代码:
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
signingConfigs {
config {
keyAlias '别名'
keyPassword 'keypass'
storeFile file('路径')
storePassword 'pass'
v1SigningEnabled true //兼容v1
v2SigningEnabled true //兼容v2
}
}
defaultConfig {
applicationId "uni.UNI20C4F61"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {
abiFilters 'armeabi-v7a', 'x86'// , 'arm64-v8a'//, 'x86_64'
}
}
buildTypes {
debug {
signingConfig signingConfigs.config
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
aaptOptions {
additionalParameters '--auto-add-overlay'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
implementation "com.android.support:support-v4:28.0.0"
implementation "com.android.support:appcompat-v7:28.0.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation "com.facebook.fresco:animated-gif:1.13.0"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
}
同步一下
7.添加对应代码并同步
代码:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
maven{
url 'https://dl.google.com/dl/android/maven2/'
name 'Google'
}
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
maven{
url 'https://dl.google.com/dl/android/maven2/'
name 'Google'
}
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
8.HbuilderX生成本地打包app资源
复制此文件夹(UNI20C4F61)
9.打开Android-studio 在assets下创建apps文件夹 将复制的资源包放到apps文件夹下
10.修改appid
11.调试
最终效果 实现uniapp 通过原生离线打包将应用变为Launcher程序