從零開始Android鴻蒙混合打包
參考:
https://mp.weixin.qq.com/s/v4jT-DHk5opb2wEqwQzV0w
https://baijiahao.baidu.com/s?id=1704042360606920922&wfr=spider&for=pc
鴻蒙混合打包(支持安卓群嗤、鴻蒙相互調(diào)用)-開源基礎軟件社區(qū)-51CTO.COM
首先創(chuàng)建 Android 和鴻蒙的兩個工程,這兩個工程需要使用同樣的包名烟央,同樣的版本信息,這個包名需要去 AppGallery Connect中的項目上添加呜呐,然后添加該應用的 P7B 文件(主要配置簽名和添加調(diào)試設備的 UDID)掰伸,參考前一篇。
1呢撞、改造 Android 工程
1.1 復制 abilityshell_ide_java.jar
復制 abilityshell_ide_java.jar?到 app/libs 目錄下,這個文件在 Harmony SDK 里有饰剥,具體路徑可以搜索一下殊霞。我的本機路徑:PublicHarmonyOSLegacySdk\java\3.0.0.1\api\abilityshell_ide_java.jar 。然后在 app 模塊添加本地依賴?implementation fileTree(dir:'libs',include: ['*.jar','*.aar'])汰蓉。這里有點小問題绷蹲,據(jù)說依賴的 aar 包里的 Activity 不能在鴻蒙中調(diào)起,沒試過古沥,不確定 -- 已經(jīng)確定瘸右,可以正常調(diào)起娇跟,所以還是需要自己寫代碼驗證岩齿,不要總聽別人說。
1.2 修改 AndroidManifest.xml 文件
在?manifest 節(jié)點下添加
<uses-feature android:name="zidane.software.ability" android:required="false" />
在 application 節(jié)點下添加?
<meta-data android:name="permZA" android:value="true" />
<meta-data android:name="multiFrameworkBundle" android:value="true" />
同時苞俘,需要配置 application 的 name 屬性為自定義 Application 盹沈,繼承自?HarmonyApplication ,這個漏了會出問題。乞封。做裙。。
1.3 修改 app 模塊的 build.gradle 文件
配置簽名信息肃晚,可以直接使用鴻蒙的 p12 文件锚贱,在 android 構(gòu)建塊中添加如下類容:
signingConfigs {
? ? debug {
? ? ? ? storeFile file('D:\\xxxx.p12')
? ? ? ? storePassword 'xxxx'
? ? ? ? keyAlias 'xxxx'
? ? ? ? keyPassword 'xxxx'
? ? ? ? v1SigningEnabled true
? ? ? ? v2SigningEnabled true
? ? }
? ? release {
? ? ? ? storeFile file('D:\\xxxx.p12')
? ? ? ? storePassword 'xxxx'
? ? ? ? keyAlias 'xxxx'
? ? ? ? keyPassword 'xxxx'
? ? ? ? v1SigningEnabled true
? ? ? ? v2SigningEnabled true
? ? }
}
buildTypes {
? ? debug {
? ? ? ? minifyEnabled false
? ? ? ? signingConfig signingConfigs.debug
? ? }
? ? release {
? ? ? ? minifyEnabled false
? ? ? ? proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
? ? ? ? signingConfig signingConfigs.release
? ? }
}
然后配置輸出的 apk 文件名稱,混合打包需要特定名稱后綴关串,也在 android 構(gòu)建塊中添加
applicationVariants.all { variant ->
? ? variant.outputs.all {
? ? ? ? //文件名格式要求 xxx-entry.apk
? ? ? ? outputFileName = "xxx-entry.apk"
? ? }
}
注意 APK 的版本信息需要和鴻蒙的一致拧廊,這里改為鴻蒙 IDE 創(chuàng)建默認的版本
versionCode 1000000
versionName "1.0.0"
1.4 跳轉(zhuǎn)鴻蒙 Ability
MainActivity 的 Textview 控件添加一個點擊事件,跳轉(zhuǎn)鴻蒙 Ability 晋修,如下:
try {
? ? Intent intent = new Intent();
? ? ComponentName componentName = new ComponentName("xxx", "xxx.XxxxShellActivity");
? ? intent.setComponent(componentName);
? ? startActivity(intent);
} catch (Exception e) {
? ? Log.e(TAG, "startHmAbility : " + Log.getStackTraceString(e));
}
鴻蒙的 XxxxAbility 類都有對應的?XxxxAbilityShellActivity 吧碾,這一點可以通過打開鴻蒙應用,然后 dumpsys window 進行驗證墓卦。
到此倦春, Android 端改造告一段落,可以直接編譯 apk 了落剪。
2睁本、改造鴻蒙工程
新建一個鴻蒙工程,選擇 Empty Ability 即可著榴, Bundle Name 的值要保持和 Android 工程的包名一致添履,其他的隨意填寫。創(chuàng)建好后脑又,默認只包含一個 entry 模塊暮胧。先按照上一篇配置簽名,然后看下并否直接運行到鴻蒙手機上问麸。然后將entry模塊專門用來配置支持混合打包往衷,作為殼 module ,如果要添加鴻蒙的功能严卖,可以新建 module 來處理席舍。改造步驟如下:
2.1 將 Android 工程的產(chǎn)物 APK 和簽名私鑰 P12 文件復制到鴻蒙工程根目錄
2.2 修改 entry 模塊的 build.gradle 文件
在 ohos 塊中添加如下配置:
legacyApkOptions{
? ? legacyApk rootProject.file('xxx-entry.apk').absolutePath //混入apk的存放路徑
? ? signConfig{
? ? ? ? storeFile rootProject.file('xxx.p12')? //混入apk所用簽名文件
? ? }
}
2.3 修改 entry 模塊的清單配置文件 config.json 文件
在 "app" 節(jié)點里添加?"relatedBundleName": "" 鍵值對,值填寫為包名即可哮笆,需要與 Android APK 一致来颤。注意參考文章中寫的配置?originalName 鍵值對,查看 config.json 文件某個屬性支持哪些值稠肘,直接通過 ctrl + 鼠標單擊該值福铅,即可打開其支持的列表配置項。
2.4 新建一個 module 项阴,用于提供鴻蒙界面滑黔,即上面 Android 工程中跳轉(zhuǎn)的鴻蒙 Ability,注意 Module type 選擇 feature ,一個鴻蒙工程一般支持一個 entry 模塊略荡,可以支持多個 feature 模塊庵佣,可以參考鴻蒙官網(wǎng)說明:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-fundamentals-0000000000041611#ZH-CN_TOPIC_0000001063248002__li2196104218714
創(chuàng)建完成后,將運行的模塊由 entry 切換為這個新建的模塊汛兜,并在 Run - Edit configuration 中將該模塊的 Deploy Multi Hap Packages 勾選上巴粪,點擊運行即可,如果不出意外粥谬,應該可以成功運行并默認打開 XxxShellActivity验毡。
到此,一個 Android 和鴻蒙的混合打包初步告一段落帝嗡。晶通。。