ionic3編寫插件調(diào)用aar.

ionic3如何編寫插件,我這里就不詳細(xì)描述了,給出一個參考地址參考這里。

重點說的是如何調(diào)用aar以及關(guān)于activity 的問題。

1.使用plugman生成對應(yīng)的插架的目錄。

? ??cd ionic-how-to-create-cordova-plugin

????mkdir plugins_src

????cd plugins_src

????plugman create --name HelloWorld --plugin_id cordova-plugin-hello-world --plugin_version 0.0.1

????cd HelloWorld

????plugman platform add --platform_name android

????plugman platform add --platform_name ios

????cd ..

????cd ..

????ionic cordova plugin add plugins_src/HelloWorld

最后一步基本都會報錯,因為我們?nèi)鄙僖粋€ packagejson的文件,plugman提供了這個功能。

2.使用 plugman 生成配置文件

? ??plugman createpackagejson .

簡單回答一些問題,生成的packagejson 看起來有點像這樣

? ??{

????"name": "HelloWorld",

????"version": "0.0.1",

????"description": "HelloWorld",

????"cordova": {

????"id": "cordova-plugin-hello-world",

????"platforms": [

????"android",

????"ios"

????]

????},

????"keywords": [

????"ecosystem:cordova",

????"cordova-android",

????"cordova-ios"

????],

????"author": "Garfield",

????"license": "ISC"

????}

**這里面有個坑,雖然我的例子里面是用了 cordova-plugin-hello-world? 這樣的插件名字,但是我不建議你這么做,在我的編譯環(huán)境下,java 沒有辦法認(rèn)識帶有中橫線的包,我索性都改成了 . **

3. 目錄結(jié)構(gòu)

拷貝你的.aar到你的 plugins_src 下面,然后建立一個空白的build.gradle,這里的內(nèi)容我們待會兒在添加。

4 利用你的Android Studio,拷貝需要的gradle

在AS下如何使用aar ,這個應(yīng)該就相對簡單了吧,新建一個工程,然后新建模塊,導(dǎo)入aar,就行了。

如果你的aar 有需要的依賴,也一起填進來。這個時候查看你的工程的build.gradle ,我們需要拷貝其中

????repositories{

? ? jcenter()

? ? flatDir{

? ? ? dirs 'libs'

? ? }

? ? }

? ? dependencies {

? ? compile(name:'youraarfile', ext:'aar')

? ? compile 'com.google.code.gson:gson:2.2.4'

? ? compile 'com.android.support:support-v13:26.1.0'

? ? }

? android {

? ? ? defaultConfig {

? ? ? ? ? minSdkVersion 16

? ? ? ? ? targetSdkVersion 22

? ? ? }

? ? ? packagingOptions {

? ? ? ? ? exclude 'META-INF/NOTICE'

? ? ? ? ? exclude 'META-INF/LICENSE'

? ????}

? ????}

其中重要的地方是:? ?

? ? compile(name:'youraarfile', ext:'aar')

5? 修改plugin.xml

這里面有幾個重點,

添加

第二個重點是 如果你的aar 里面有activity ,也需要添加進來。

如果你不知道aar 里面有什么,把aar的后綴改成zip,然后解壓縮,同樣可以看到?AndroidManifest.xml。

其中關(guān)于Activity 的部分拷貝到你的plugin.xml 中。

6 編寫代碼

插件.java 中如果用到了 activity ,會出現(xiàn)一個提示,

????Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

大致的意思是 你想從一個?Activity 的外部呼叫這個?Activity的話 ,需要一個?FLAG_ACTIVITY_NEW_TASK 標(biāo)志。

//下面最關(guān)鍵,利用intent啟動新的Activity

? ? ? ? ? ? Intent intent = new Intent(cordova.getActivity(), youaarfile.Activity.class);

? ? ? ? ? ? intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

? ? ? ? ? ? intent.putExtra("mode","auth");

? ? ? ? ? ? intent.setPackage(this.cordova.getActivity().getApplicationContext().getPackageName());

? ? ? ? ? ? if (this.cordova != null) {

? ? ? ? ? ? ? ? this.cordova.startActivityForResult((CordovaPlugin) this, intent, 0);

? ? ? ? ? ? }

7 至于在page里面如何調(diào)用plugin 類似下面就可以了

????declare var cordova: any;

????cordova.plugins.yourplugin.coolMethod({

? ? ? ????_sMessage: "Hello World"

? ????? }, success, failure);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由、網(wǎng)絡(luò)層、UI層、通信層或其他單一功能的框架 混合開發(fā)框架:...
    偉子男閱讀 5,355評論 0 161
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    wgl0419閱讀 6,575評論 1 9
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,847評論 2 45
  • 文 | 丁小雅 圖 | 丁小雅 我這周非常榮幸的參加了公司的拓展培訓(xùn),老實講,這是我第一次參加拓展培訓(xùn),我以為...
    丁小雅閱讀 580評論 1 6
  • 約束是一種限制,它通過對表的行或列的數(shù)據(jù)做出限制,來確保表的數(shù)據(jù)的完整性、唯一性。 約束分類 |約束類型 |主...
    lupinwu閱讀 208評論 0 0

友情鏈接更多精彩內(nèi)容