從零開始Android鴻蒙混合打包

從零開始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 和鴻蒙的混合打包初步告一段落帝嗡。晶通。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哟玷,一起剝皮案震驚了整個濱河市狮辽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巢寡,老刑警劉巖喉脖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抑月,居然都是意外死亡树叽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門谦絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來题诵,“玉大人,你說我怎么就攤上這事层皱⌒远В” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵叫胖,是天一觀的道長草冈。 經(jīng)常有香客問我,道長瓮增,這世上最難降的妖魔是什么怎棱? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮绷跑,結(jié)果婚禮上拳恋,老公的妹妹穿的比我還像新娘。我一直安慰自己你踩,他們只是感情好诅岩,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著带膜,像睡著了一般吩谦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膝藕,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天式廷,我揣著相機與錄音,去河邊找鬼芭挽。 笑死滑废,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的袜爪。 我是一名探鬼主播蠕趁,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辛馆!你這毒婦竟也來了俺陋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昙篙,失蹤者是張志新(化名)和其女友劉穎腊状,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苔可,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡缴挖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了焚辅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片映屋。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖同蜻,靈堂內(nèi)的尸體忽然破棺而出秧荆,到底是詐尸還是另有隱情,我是刑警寧澤埃仪,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布乙濒,位于F島的核電站,受9級特大地震影響卵蛉,放射性物質(zhì)發(fā)生泄漏颁股。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一傻丝、第九天 我趴在偏房一處隱蔽的房頂上張望甘有。 院中可真熱鬧,春花似錦葡缰、人聲如沸亏掀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滤愕。三九已至温算,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間间影,已是汗流浹背注竿。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魂贬,地道東北人巩割。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像付燥,于是被迫代替她去往敵國和親宣谈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容