AndroidStudio离线打包muiH5+app

1.安装Androidstudio

2.安装相关版本sdk

3.下载dcloud官方提供的sdk并解压.

4.androidstudio中导入HBuilder-Integrate-AS作为参考.

5.在andrioidstudio新建一个空项目,项目路径要建好,在后面配置中会使用,例如:com.zhuye.h5bank

6.在libs中导入所需jar包,可以从导入的demo中复制

android-gif-drawable-release@1.2.23.aar fastjson-1.2.78.jar lib.5plus.base-release.aar oaid_sdk_1.0.25.aar

7.在项目中main目录下创建apps文件夹:

H5Bank\app\src\main\assets\apps\项目appid(可以从dcloud官网控制台获取或mui项目的manifest.json中获取)\www\ (把mui项目粘进来除了unpackage目录)

8.在项目中main目录下创建data文件夹:

H5Bank\app\src\main\assets\data 并放入文件(可以从导入的demo中复制)

dcloud_control.xml dcloud_error.html dcloud_properties.xml

dcloud_control.xml中增加如下代码,appid根据实际项目获取

<apps>
    <app appid="H50F96945" appver=""/>
</apps>

9.AndroidManifest.xml 配置权限

10.AndroidManifest.xml配置dcloud_appkey,该key需要去官网控制台申请.

key生成参考: Android平台签名证书(.keystore)生成指南 - DCloud问答

key申请参考:

原生开发者支持

生成命令: keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 查看命令: keytool -list -v -keystore test.keystore key存储位置: C:\Program Files\Java\jre1.8.0_65\bin

key名称尽量与项目名称保持一致.

生成的key文件放到app目录下

在AndroidManifest.xml中application标签内增加key配置到码如下:

<provider
    android:name="io.dcloud.common.util.DCloud_FileProvider"
    android:authorities="{applicationId}.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="26c5e563e23c16c863db60c001658b9b" />

name:dcloud_appkey保持不变value从控制台生成后粘贴

11.签名信息配置

在build.gradle中配置签名信息如下:

signingConfigs {
    config {
        keyAlias 'testalias'
        keyPassword '666666'
        storeFile file('hello_login.keystore')
        storePassword '666666'
        v1SigningEnabled true
        v2SigningEnabled true
    }
}
​
buildTypes {
    debug {
        signingConfig signingConfigs.config
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    release {
        signingConfig signingConfigs.config
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

12.导入的jar包如果读取不到在build.gradle中导入如下代码

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.android.support:support-v4:30.4.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

13.build.gradle代码整体参考:

plugins {
    id 'com.android.application'
}
​
android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"
​
    defaultConfig {
        applicationId "com.zhuye.h5bank"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
​
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
​
​
    signingConfigs {
        config {
            keyAlias 'testalias'
            keyPassword '666666'
            storeFile file('hello_login.keystore')
            storePassword '666666'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
​
    buildTypes {
        debug {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.android.support:support-v4:30.4.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

14.AndroidManifest.xml整体代码参考:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zhuye.h5bank"
    xmlns:tools="http://schemas.android.com/tools"
    >
​
    <application
        android:name="io.dcloud.application.DCloudApplication"
        android:allowClearUserData="true"
        android:label="@string/app_name"
        android:largeHeap="true" >
        <activity
            android:name="io.dcloud.PandoraEntry"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"
            android:hardwareAccelerated="true"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="user"
            android:theme="@style/TranslucentTheme"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
​
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="io.dcloud.PandoraEntryActivity"
            android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation|mcc|mnc|fontScale"
            android:hardwareAccelerated="true"
            android:label="5+Debug"
            android:launchMode="singleTask"
            android:screenOrientation="user"
            android:theme="@style/DCloudTheme"
            android:windowSoftInputMode="adjustResize" >
        </activity>
        <service
            android:name="io.dcloud.common.adapter.io.MiniServerService"
            android:exported="true" />
        <provider
            android:name="io.dcloud.common.util.DCloud_FileProvider"
            android:authorities="{applicationId}.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="26c5e563e23c16c863db60c001658b9b" />
    </application>
​
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-feature android:name="android.hardware.camera"/>",
    <uses-feature android:name="android.hardware.camera.autofocus"/>",
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>",
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>",
    <uses-permission android:name="android.permission.BLUETOOTH"/>",
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>",
    <uses-permission android:name="android.permission.CAMERA"/>",
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>",
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>",
    <uses-permission android:name="android.permission.INTERNET"/>",
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>",
    <uses-permission android:name="android.permission.VIBRATE"/>",
    <uses-permission android:name="android.permission.BLUETOOTH"/>",
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>"
</manifest>

版权声明:本文为q398556743原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。