鴻蒙混合打包,在現(xiàn)有安卓應用的基礎上擴展鴻蒙的特性,以最快的速度布局鴻蒙生態(tài)!
本項目只是《京東 APP 鴻蒙版上架實踐》這篇文章的一個驗證,讓更多的兄弟們可以少走彎路。
我盡可能把每一步的改動作為一個 commit,這樣方便大家看代碼。
開發(fā)步驟
①準備 Android 工程
本示例中,我用 AS 建了一個 Hello World 工程。
②Android 工程改造
這一步,有兩點要注意的:
abilityshell_ide_java.jar 在這里,自行 copy 到安卓工程中。
注意 apk 文件名必須是 xxx-entry.apk 這種格式。
③準備鴻蒙工程
本示例中,我用 DevEco Studio 建了一個 Hello World 工程。
④配置鴻蒙工程
這一步,有三點要注意的:
簽名就不要轉(zhuǎn)了,直接重新創(chuàng)建,只要秘鑰和別名和 Android 的保持不變。(如果在模擬器上運行,不配置簽名也能跑起來)
鴻蒙的 version 和 apk 的 version 要一致。
config.json 的 app 節(jié)點下,增加 relatedBundleName 而不是 originalName。
config.json 里都支持哪些字段,沒必要看文檔,只要按住 ctrl 點擊相應的字段,就可以看到,比如點擊 app 字段。

⑤卡片
本示例中,我用 DevEco Studio 建了一個名為 mycard 的 module,并且勾選“show in service center”,這樣這個卡片就可以顯示在“服務中心”了。
有幾點需要說明:
必須簽名(我的驗證結(jié)果是這樣的),所以要有真機。我提交的簽名文件是綁定我的機器,所以你要更新自己的簽名文件。
卡片的 config.json 的 app 字段要和 entry 的 app 字段完全一致(relatedBundleName 字段只在 entry 里有就可以,卡片里不寫也行)。
多 module 的工程,運行的時候要勾選 Deploy Multi Hap Packages。
為什么把卡片放在獨立的 module 里?因為混合打包下,entry 只是一個殼,我們可以把 entry 當作 apk 的占位,所以 entry 里的內(nèi)容都不會打到 appj 里,鴻蒙相關(guān)的功能代碼我們只能放在獨立的 module 中。(當然,這也是我的驗證結(jié)果,最終要等華為官方更明確的文檔解釋)
請參考京東 APP 鴻蒙版上架實踐:
⑦鴻蒙打開 apk 中的 activity,并傳遞參數(shù)
鴻蒙 IntentParams 對應安卓 Bundle,相應的 api:
//ohos put:
IntentParams params = new IntentParams();
params.setParam(“androidFile1”,“androidFile1----”);
intent.setParams(params);
//android put:
Intent intent = new Intent();
intent.putExtra(“androidFile1”,“androidFile1----”);
//get:
intent.getStringExtra(“androidFile1”);
鴻蒙 Uri 對應安卓 Uri,鴻蒙 Entity 對應安卓 Category,相應的 api:
//ohos put:Set《String》 entities = new HashSet《》();
entities.add(“entity.user.c1”);
Operation operation = new Intent.OperationBuilder()
.withUri(Uri.parse(“https://www.baidu.com”))
.withEntities(entities)
.build();
//android put:
Intent intent = new Intent();
intent.setData(Uri.parse(“https://www.baidu.com”));
intent.addCategory(“entity.user.c1”);
//get:
intent.getData();
intent.getCategories();
常見問題(歡迎評論區(qū)補充)
Failure[INSTALL_FAILED_INCONSISTENT_BUNDLE_VERSION]
混合打合時要和 apk 的 version 一致。
Failure[INSTALL_FAILED_RESTRICTED_PERMISSIONS_NOT_GRANTED]
沒有繼承 HarmonyApplication 或者沒有配置到 AndroidManifest.xml 中。
Failure[INSTALL_FAILED_INTERNAL_ERROR]
確認一下:
在AndroidManifest.xml中,向根節(jié)點下增加。
《uses-feature android:name=“zidane.software.ability” android:required=“false” /》
向application節(jié)點下新增子節(jié)點。
《meta-data android:name=“permZA” android:value=“true” /》
《meta-data android:name=“multiFrameworkBundle” android:value=“true” /》
編輯:jq
-
Android
+關(guān)注
關(guān)注
12文章
4026瀏覽量
134031 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2642瀏覽量
69871
原文標題:在安卓應用上擴展鴻蒙特性
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
工業(yè)安卓一體機在人工智能機器人領(lǐng)域上的應用分析
安卓主板定制_MTK聯(lián)發(fā)科安卓系統(tǒng)主板PCBA方案開發(fā)
安卓主板定制_聯(lián)發(fā)科MTK主板方案_安卓板定制開發(fā)
工業(yè)級安卓觸摸一體機在考試閱卷設備上的應用探索
定制安卓主板_迷你小型Android主板基于MTK安卓核心板方案
釋放潛力:在樹莓派上運行安卓系統(tǒng)實現(xiàn)多樣化應用!
安卓工控機為什么備受青睞?聚徽一文解碼工業(yè)智能升級中的多維度賦能者
安卓與 Windows 系統(tǒng)的手持工業(yè)平板電腦,該如何選擇?
有人接rk3576的安卓視頻硬件解碼的實現(xiàn)么?
安卓工控一體機在智慧農(nóng)業(yè)設備中的應用場景
工業(yè)級安卓一體機在智能機器人中的應用
工業(yè)安卓主板在智能電子秤設備中的應用
在現(xiàn)有安卓應用的基礎上擴展鴻蒙的特性
評論