<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # // https://medium.com/ionic-and-the-mobile-web/how-to-write-cordova-plugins-864e40025f2 https://moduscreate.com/blog/writing-a-cordova-plugin-in-swift-for-ios/ # 先創建測試項目 1. 創建Hello工程 `cordova create hello com.moke.hello Hello` 第一個hello是創建的工程文件夾名 中間的com.moke.hello就不用多說了,Hello,工程名 2. 添加開發環境平臺 首先得切換命令目錄到工程目錄,例如本例子就需要 cd hello到工程目錄中,然后執行 以下命令: android環境:`cordova platform add android` ios環境:`cordova platform add ios` 3. 添加插件 這一步可做可不做 ,但是命令還是要寫出來。 `cordova plugin add *********` ,星號部分為插件的地址 或者 自定義插件的目錄地址 可以添加也可以刪除 `cordova plugin rm ********` ,星號為插件名 如果不知道插件名 可以用命令查看當前工程的插件列表 `cordova plugin list` 4. 最后就是編譯 `cordova build android` # 創建自定義插件 有時候github或者npm上的插件不能滿足項目需求時 就需要自己自定義插件 全局安裝plugman: plugman用于創建插件,(如果你不使用plugin也行,只要你理清了cordova插件的目錄結構也行~) ~~~ npm i -g plugman ~~~ 先cmd到桌面或者任意磁盤目錄執行以下命令,創建了一個插件并添加了 android 平臺,也生成了`package.json`文件.。插件名:`nativeLocation` ,插件id:`com.wjipet.com.mobsdkCore`,版本:0.0.1,`package.json` 是插件描述文件,如果插件只是自己用可以不用生成* ~~~ plugman create --name cordovamobsdkCore--plugin_id com.wjipet.com.mobsdkCore --plugin_version 0.0.1 cd mobsdkCore\ plugman createpackagejson ./ plugman platform add --platform_name android plugman platform add --platform_name ios ~~~ # 使用 Android Studio 打開項目 Android Studio打開項目,注意項目是你的`app項目>platforms>android`。 ## 真機連接調試 啟用手機`開發者選項`,`傳輸文件`,`允許USB調試`! 使用命令`adb devices`,查看手機是否真正連接,只有當狀態為device時才說明連接成功,如下圖 ## 查看日志 `Android Monitor -> logcat`: 運行到真機上后,點擊app頁面上的按鈕可以在Studio控制臺上看到日志信息。這里的控制臺就是輸出android app運行的日志。app插件bug,閃退等常見問題均可以在這里看到錯誤日志。 # plugin.xml相關配置 ~~~ <source-file src="src/android/PaySDK/assets/data.bin" target-dir="assets" /> ~~~ ***** # 對于開發的插件 ## [cordova-custom-config](https://github.com/dpa99c/cordova-custom-config) 這個插件從 `config.xml` 配置讀取自定義參數,該文件可以被提交到版本控制中,因此可以跨多個開發機器、CI環境和在構建之間進行維護,即使一個平臺被刪除并被重新添加。 ## [cordova-config-utils](https://github.com/mhartington/cordova-config-utils) 這個Hook 可以根據Cordova通常不使用/忽略的 <preference> 和<config-file> 標簽。XML中定義的配置文件數據來更新平臺配置文件。用例包括,例如,在iOS設置 `ENABLE_BITCODE = NO` 或禁用 應用傳輸安全(ATS)。目前只支持 `AndroidManifest.xml`,iOS `*-Info.plist` 和 `*.xcodeproj/project.pbxproj` 文件。 # 問題 ## 降級cordova-android 通過`cordova platform add android` 默認安裝了,最新的 cordova-android@~7.0.0 版本出錯: ~~~ (node:8072) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated. Error: ENOENT: no such file or directory, mkdir 'D:\My Projects\hello\platforms\android\src\com\moke\hello\wxapi' ~~~ 通過降級安裝:`cordova platform add android@6.4.0` 就沒有問題! ## 怎么接受不確定的異步結果的成功失敗信息? ```java private void sendNoResultPluginResult(CallbackContext callbackContext) { // save current callback context currentCallbackContext = callbackContext; // send no result and keep callback PluginResult result = new PluginResult(PluginResult.Status.NO_RESULT); result.setKeepCallback(true); callbackContext.sendPluginResult(result); } ``` ## cordova libs jar包沖突? 問題出現: ~~~ java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex ~~~ 解決一:For Cordova based project, run `cordova clean android` before build again 解決二: # AndroidManifest.xml 重復鍵 如果 如下,如果有兩個插件都設置了如下 Mob-AppKey Mob-AppSecret name,如果這兩個name 以及value 完全相同,cordova 在安裝這個兩個插件之后,只會保留這個兩個 ~~~ <meta-data android:name="Mob-AppKey" android:value="$MOB_APPKEY"/> <meta-data android:name="Mob-AppSecret" android:value="$MOB_APPSECRET"/> ~~~ 如果有value不同,會出現如下情況,導致 `build` 時,出項類似 `duplicate 錯誤`: ~~~ <meta-data android:name="Mob-AppKey" android:value="12"/> <meta-data android:name="Mob-AppSecret" android:value="234234324"/> ... <meta-data android:name="Mob-AppKey" android:value="12"/> <meta-data android:name="Mob-AppSecret" android:value="234234324"/> ~~~ https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/606 [Cordova插件 / 混合應用插件開發: 解決duplicate issue](https://www.phodal.com/blog/cordova-plugin-remove-duplicate-license-issue/) ## 添加 gradle framework 也可以用于有定制的。gradle文件被包含到主項目的構建中。 ~~~ <framework src="src/android/Wechatpay.gradle" custom="true" type="gradleReference" /> ~~~ Wechatpay.gradle 內容: ~~~ repositories { } dependencies { compile 'com.umeng.sdk:share-wechat:latest.integration' } ~~~ # cordova android 7.0 問題 如果一個比較舊的插件沒有更新到cordova-android@7.0.0,就會出現一些問題,。 Android @ 6.30和Android @ 6 . 4 . 0之所以可以工作,是因為它可能使用了較舊的平臺項目目錄布局(platform project directory layout),在這種布局中,它似乎將頂層 `/platforms/android` 目錄用于 `res` 和 `libs` 文件夾。 從Android @ 7 . 0 . 0開始,我注意到它添加了 `app` 子目錄,你的 `config.xml` 和 `res` 應該在`/platforms/android/app/src/main/res/xml/config.xml` 而不是 `/platforms/android/res/xml/config.xml`。 舊插件可能具有將文件復制到錯誤位置的安裝/刪除腳本。 解決方法: 1. 更新插件, 2. cordova-android 降級 ~~~ cordova platform rm android cordova platform add android@6.4.0 //6.3.0 ~~~ ## 避免再次混淆 如果對ProGuard不太了解,可以查看[這篇文章](http://blog.csdn.net/ljd2038/article/details/51308768#reply)。 [proguard-rules 常用第三方庫的混淆配置](https://blog.csdn.net/shanshan_blog/article/details/53169315) https://blog.csdn.net/wozuihaole/article/details/73847803 # 參考 [Cordova插件開發(2)-Android插件安裝包制作詳解](https://blog.csdn.net/fxp850899969/article/details/70740519) [Cordova 開發之安卓插件開發(二)](https://blog.csdn.net/cmwly/article/details/77843852) [自定義cordova插件-入門](https://www.jianshu.com/p/9cd6f6f7a5cb) [cordova 自定義插件之完整流程](https://blog.csdn.net/q8666995/article/details/53893780)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看