{"id":3123,"date":"2021-03-27T23:06:56","date_gmt":"2021-03-27T15:06:56","guid":{"rendered":"http:\/\/170.106.148.50\/?p=3123"},"modified":"2021-03-27T23:13:34","modified_gmt":"2021-03-27T15:13:34","slug":"uniapp%e5%ae%89%e5%8d%93%e5%8e%9f%e7%94%9f%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91","status":"publish","type":"post","link":"https:\/\/www.195440.com\/3123","title":{"rendered":"uniapp\u5b89\u5353\u539f\u751f\u63d2\u4ef6\u5f00\u53d1"},"content":{"rendered":"
\n

1. \u51c6\u5907\u5de5\u4f5c<\/h4>\n

1.1 \u4e0b\u8f7dHBuilder\u79bb\u7ebf\u6253\u5305Android\u7248SDK( 5+SDK)<\/a>\uff0c\u5e76\u5c06\u5176\u4e2d\u7684UniPlugin-Hello-AS\u5de5\u7a0b\u5bfc\u5165AndroidStudio<\/p>\n

1.2 \u5728UniPlugin-Hello-AS\u5de5\u7a0b\u4e2d\u521b\u5efa\u63d2\u4ef6Module\uff0c\u5e76\u7f16\u8f91Module\u7684build.gradle\u6587\u4ef6\u4f7fModule\u5177\u5907\u5f00\u53d1uni-app\u63d2\u4ef6\u7684\u80fd\u529b<\/p>\n

(1) \u6dfb\u52a0\u4f9d\u8d56\u5e93<\/p>\n

\n
  • \u6ce8\u91ca\u9ed8\u8ba4\u7684\u57fa\u7840\u4f9d\u8d56\u5e93\uff1aAndroid Studio\u9ed8\u8ba4\u4f1a\u5728dependencies\u8282\u70b9\u4e0b\u6dfb\u52a0\u4e00\u4e9b\u57fa\u672c\u4f9d\u8d56\u5e93\uff0c\u5982\u4e0b\u56fe\u7ea2\u6846\u5185\u7684\u5f15\u7528\u6ce8\u91ca\u6389 \u6216 \u6539\u4e3acompileOnly\u4f9d\u8d56\u65b9\u5f0f\n
    \n
    \n
    <\/div>\n<\/div>\n
    \"\"<\/div>\n<\/div>\n<\/li>\n<\/ul>\n

    \u6ce8\u610f<\/code>\uff1alibs\u6587\u4ef6\u5939\u4e0b\u7684jar\u6587\u4ef6\u5df2\u6539\u4e3acompileOnly\u65b9\u5f0f\u5f15\u7528\u4e86\uff0c\u6545\u5f53\u79bb\u7ebf\u5de5\u7a0b\u8c03\u8bd5\u65f6\u9700\u8981\u628a\u63d2\u4ef6\u4e2d\u7528\u5230\u7684jar\u6587\u4ef6\u5728app\u5de5\u7a0b\u7684build.gradle\u4e2d\u914d\u7f6e\u76f8\u5e94\u7684jar\u6587\u4ef6implementation\u5f15\u5165\uff0c\u5426\u5219\u5bfc\u81f4\u5e94\u7528\u95ea\u9000\u7b49\u95ee\u9898\u3002\u81f3\u4e8e\u63d2\u4ef6\u4e2d\u7528\u5230\u7684jar\u6587\u4ef6\u5728\u6253\u63d2\u4ef6\u5305\u65f6\u6587\u4ef6\u5230\u5e95\u653e\u5728\u4ec0\u4e48\u4f4d\u7f6e\u8bf7\u7559\u610f\u63d2\u4ef6\u6253\u5305\u6587\u6863\u3002<\/p>\n

    \n
  • \u65b0\u589e\u4ee5\u4e0b\u5f15\u7528\uff08\u51fa\u73b0\u5e95\u8272\u6807\u7ea2\u8868\u793a\u5f53\u524d\u5f15\u7528\u7248\u672c\u4e0ecompileSdkVersion\u7248\u672c\u4e0d\u540c\uff0c\u5ffd\u7565\u5373\u53ef\uff09<\/li>\n<\/ul>\n
    \n
    compileOnly \"com.android.support:recyclerview-v7:26.1.0\"<\/span>  \r\ncompileOnly \"com.android.support:support-v4:26.1.0\"<\/span>  \r\ncompileOnly \"com.android.support:appcompat-v7:26.1.0\"<\/span>  \r\n<\/code><\/pre>\n<\/div>\n

    \u6ce8\u610f<\/code>\uff1adependencies\u8282\u70b9\u6dfb\u52a0\u4f9d\u8d56\u5e93\u65f6\u9700\u4f7f\u7528compileOnly\u4f9d\u8d56\u65b9\u5f0f\uff0c \u9632\u6b62\u6253\u5305\u65f6\u4e0e\u5176\u4ed6\u63d2\u4ef6\u8d44\u6e90\u5e93\u51b2\u7a81\u5bfc\u81f4\u6253\u5305\u5931\u8d25\u3002<\/p>\n

    (2) \u5bfc\u5165uniapp-release.aar<\/p>\n

    \n
    repositories {\r\n    flatDir {\r\n        dirs 'libs'\r\n    }\r\n}<\/code><\/pre>\n<\/div>\n
    \n
    compileOnly fileTree<\/span>(<\/span>dir:<\/span> '..\/app\/libs'<\/span>,<\/span> include<\/span>:<\/span> [<\/span>'uniapp-release.aar'<\/span>]<\/span>)<\/span>  \r\n<\/code><\/pre>\n<\/div>\n

    \u6ce8\u610f<\/code>\uff1a\u6b64\u5904dir\u9700\u6839\u636e\u5177\u4f53\u5de5\u7a0b\u76ee\u5f55\u914d\u7f6e\uff0c\u5f53\u524d\u5199\u6cd5\u4ec5\u9002\u7528\u4e8eUniPlugin-Hello-AS\u5de5\u7a0b<\/p>\n

    2. \u63d2\u4ef6\u5f00\u53d1\u4e0e\u914d\u7f6e<\/h4>\n

    2.1 \u63d2\u4ef6\u5f00\u53d1\u793a\u4f8b<\/p>\n

    \n
    package uni.<\/span>liy.<\/span>plugin.<\/span>mytest;<\/span>\r\n\r\nimport<\/span> android.<\/span>util.<\/span>Log<\/span>;<\/span>\r\nimport<\/span> android.<\/span>widget.<\/span>Toast<\/span>;<\/span>\r\n\r\nimport<\/span> com.<\/span>alibaba.<\/span>fastjson.<\/span>JSONObject<\/span>;<\/span>\r\nimport<\/span> com.<\/span>taobao.<\/span>weex.<\/span>WXSDKEngine<\/span>;<\/span>\r\nimport<\/span> com.<\/span>taobao.<\/span>weex.<\/span>annotation.<\/span>JSMethod<\/span>;<\/span>\r\nimport<\/span> com.<\/span>taobao.<\/span>weex.<\/span>bridge.<\/span>JSCallback<\/span>;<\/span>\r\n\r\nimport<\/span> java.<\/span>util.<\/span>HashMap<\/span>;<\/span>\r\nimport<\/span> java.<\/span>util.<\/span>Map<\/span>;<\/span>\r\n\r\npublic<\/span> class<\/span> MyTestWXModule<\/span> extends WXSDKEngine.<\/span>DestroyableModule<\/span> {<\/span>\r\n    private<\/span> JSCallback<\/span> myCallback;<\/span>\r\n\r\n    @JSMethod<\/span>(<\/span>uiThread =<\/span> true<\/span>)<\/span>\r\n    public<\/span> void showToast<\/span>(<\/span>String<\/span> msg)<\/span>{<\/span>\r\n        Toast<\/span>.<\/span>makeText<\/span>(<\/span>mWXSDKInstance.<\/span>getContext<\/span>(<\/span>)<\/span>,<\/span>msg,<\/span>Toast<\/span>.<\/span>LENGTH_SHORT<\/span>)<\/span>.<\/span>show<\/span>(<\/span>)<\/span>;<\/span>\r\n    }<\/span>\r\n\r\n    @JSMethod<\/span>(<\/span>uiThread =<\/span> true<\/span>)<\/span>\r\n    public<\/span> void getResult<\/span>(<\/span>JSONObject<\/span> options,<\/span> JSCallback<\/span> jsCallback)<\/span>{<\/span>\r\n        myCallback =<\/span> jsCallback;<\/span>\r\n        Map<\/span><<\/span>String<\/span>,<\/span>String<\/span>><\/span> map<\/span> =<\/span> new<\/span> HashMap<\/span><<\/span>><\/span>(<\/span>)<\/span>;<\/span>\r\n        try<\/span>{<\/span>\r\n            Object<\/span> name =<\/span> \"yang\"<\/span>;<\/span>\/\/\u9ed8\u8ba4\u59d3\u540d<\/span>\r\n            Object<\/span> sex =<\/span> \"man\"<\/span>;<\/span>\/\/\u9ed8\u8ba4\u6027\u522b<\/span>\r\n            name =<\/span> options.<\/span>get<\/span>(<\/span>\"name\"<\/span>)<\/span> ==<\/span> null ?<\/span> name :<\/span> options.<\/span>get<\/span>(<\/span>\"name\"<\/span>)<\/span>;<\/span>\r\n            sex =<\/span> options.<\/span>get<\/span>(<\/span>\"sex\"<\/span>)<\/span> ==<\/span> null ?<\/span> sex :<\/span> options.<\/span>get<\/span>(<\/span>\"sex\"<\/span>)<\/span>;<\/span>\r\n            Log<\/span>.<\/span>d<\/span>(<\/span>\"liyliyliy\"<\/span>,<\/span> name.<\/span>toString<\/span>(<\/span>)<\/span> +<\/span> \"\uff0c\"<\/span> +<\/span> sex.<\/span>toString<\/span>(<\/span>)<\/span>)<\/span>;<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"success\"<\/span>,<\/span>\"true\"<\/span>)<\/span>;<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"\u59d3\u540d\"<\/span>,<\/span>name.<\/span>toString<\/span>(<\/span>)<\/span>)<\/span>;<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"\u6027\u522b\"<\/span>,<\/span>sex.<\/span>toString<\/span>(<\/span>)<\/span>)<\/span>;<\/span>\r\n            myCallback.<\/span>invoke<\/span>(<\/span>map<\/span>)<\/span>;<\/span>\r\n        }<\/span>catch<\/span> (<\/span>Exception<\/span> e)<\/span>{<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"fail:\"<\/span>,<\/span>e.<\/span>getMessage<\/span>(<\/span>)<\/span>)<\/span>;<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"\u59d3\u540d\"<\/span>,<\/span>\"\"<\/span>)<\/span>;<\/span>\r\n            map<\/span>.<\/span>put<\/span>(<\/span>\"\u6027\u522b\"<\/span>,<\/span>\"\"<\/span>)<\/span>;<\/span>\r\n            myCallback.<\/span>invoke<\/span>(<\/span>map<\/span>)<\/span>;<\/span>\r\n        }<\/span>\r\n    }<\/span>\r\n\r\n    @Override<\/span>\r\n    public<\/span> void destroy<\/span>(<\/span>)<\/span> {<\/span>\r\n\r\n    }<\/span>\r\n}<\/span>\r\n\r\n<\/code><\/pre>\n<\/div>\n

    \u5907\u6ce8\uff1a\u8be5\u63d2\u4ef6\u6e90\u7801\u4e2d\u4f7f\u7528\u5230\u4e86json\u89e3\u6790\uff0c\u6545\u9700\u5728\u63d2\u4ef6Module\u7684build.gradle\u6587\u4ef6\u4e2d\u6dfb\u52a0\u76f8\u5e94\u7684\u4f9d\u8d56\u5e93 implementation 'com.alibaba:fastjson:1.2.59'<\/code><\/p>\n

    \n
    apply plugin: 'com.android.library'\r\n\r\nandroid {\r\n    compileSdkVersion 28\r\n\r\n    defaultConfig {\r\n        minSdkVersion 16\r\n        targetSdkVersion 28\r\n        versionCode 1\r\n        versionName \"1.0\"\r\n\r\n        testInstrumentationRunner \"android.support.test.runner.AndroidJUnitRunner\"\r\n    }\r\n\r\n    buildTypes {\r\n        release {\r\n            minifyEnabled false\r\n            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\r\n        }\r\n    }\r\n}\r\n\r\nrepositories {\r\n    flatDir {\r\n        dirs 'libs'\r\n    }\r\n}\r\n\r\ndependencies {\r\n    implementation fileTree(dir: 'libs', include: ['*.jar'])\r\n    compileOnly fileTree(dir: '..\/app\/libs', include: ['uniapp-release.aar'])\r\n\r\n    \/*implementation 'com.android.support:appcompat-v7:28.0.0'\r\n    testImplementation 'junit:junit:4.12'\r\n    androidTestImplementation 'com.android.support.test:runner:1.0.2'\r\n    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'*\/\r\n\r\n    compileOnly \"com.android.support:recyclerview-v7:26.1.0\"\r\n    compileOnly \"com.android.support:support-v4:26.1.0\"\r\n    compileOnly \"com.android.support:appcompat-v7:26.1.0\"\r\n\r\n    implementation 'com.alibaba:fastjson:1.2.59'\r\n}\r\n<\/code><\/pre>\n<\/div>\n

    2.2 \u63d2\u4ef6\u914d\u7f6e(\u672c\u5730\u6ce8\u518c)<\/p>\n

    \u7f16\u8f91UniPlugin-Hello-AS\u5de5\u7a0b\u4e0b \u201capp\u201d Module\u6839\u76ee\u5f55assets\/dcloud_uniplugins.json\u6587\u4ef6\uff0c\u5728nativePlugins\u8282\u70b9\u4e0b\u8fdb\u884c\u6ce8\u518c<\/p><\/blockquote>\n

    \n
    {<\/span>\r\n  \"nativePlugins\"<\/span>:<\/span> [<\/span>\r\n    {<\/span>\r\n      \"hooksClass\"<\/span>:<\/span> \"\"<\/span>,<\/span>\r\n      \"plugins\"<\/span>:<\/span> [<\/span>\r\n        {<\/span>\r\n          \"type\"<\/span>:<\/span> \"module\"<\/span>,<\/span>\r\n          \"name\"<\/span>:<\/span> \"My-Test\"<\/span>,<\/span>\r\n          \"class\"<\/span>:<\/span> \"uni.liy.plugin.mytest.MyTestWXModule\"<\/span>\r\n        }<\/span>\r\n      ]<\/span>\r\n    }<\/span>\r\n  ]<\/span>\r\n}<\/span>\r\n<\/code><\/pre>\n<\/div>\n

    3. \u63d2\u4ef6\u6253\u5305\u4e0e\u4f7f\u7528<\/h4>\n

    3.1 \u63d2\u4ef6\u6253\u5305<\/p>\n

    (1) \u7f16\u8bd1\u751f\u6210module\u7684aar\u6587\u4ef6\uff1a\u9009\u62e9Gradle—>\u63d2\u4ef6module—>Tasks—>build—>assembleRelease\uff08\u53cc\u51fb\u8fd0\u884c\u751f\u6210module\u7684aar\u6587\u4ef6\uff09
    \n(2) \u5c06\u7f16\u8bd1\u4f9d\u8d56\u5e93\u6587\u4ef6\u6216\u4ed3\u50a8\u4ee3\u7801\u653e\u5165libs\u76ee\u5f55\u4e0b\u6216\u914d\u7f6e\u5230package.json\u4e2d
    \n(3) \u5728package.json<\/a>\u586b\u5199\u5fc5\u8981\u7684\u4fe1\u606f<\/p>\n

    \u5b8c\u6574\u7684android \u63d2\u4ef6\u5305\uff1a\u4e00\u7ea7\u76ee\u5f55\u4ee5\u63d2\u4ef6id\u547d\u540d\uff0c\u5bf9\u5e94package.json\u4e2d\u7684id\u5b57\u6bb5\uff1b\u4e00\u7ea7\u76ee\u5f55\u4e0b\u5b58\u653eandroid\u6587\u4ef6\u5939\u548cpackage.json\u6587\u4ef6<\/p>\n

    \n
  • android\u6587\u4ef6\uff1a \u91cc\u9762\u5b58\u653e .aar<\/code>\u6587\u4ef6 \uff08\u63d2\u4ef6\u5305\uff09\u3001libs<\/code>\u6587\u4ef6\u5939\uff08\u5b58\u653e\u63d2\u4ef6\u5305\u4f9d\u8d56\u7684\u7b2c\u4e09\u65b9 .jar\u6587\u4ef6\u548c.so\u6587\u4ef6\uff09<\/li>\n
  • package.json\uff1a\u63d2\u4ef6\u4fe1\u606f<\/li>\n<\/ul>\n<\/blockquote>\n

    3.2 uniapp\u4e2d\u4f7f\u7528\u539f\u751f\u63d2\u4ef6<\/h4>\n

    (1) uniapp\u9879\u76ee\u4e2d\u914d\u7f6e\u672c\u5730\u63d2\u4ef6
    \n\u5c06\u63d2\u4ef6\u5305\u653e\u5230uniapp\u9879\u76eenativeplugins\u76ee\u5f55\u4e0b(\u65e0\u8be5\u76ee\u5f55\u5219\u521b\u5efa)\uff0c\u7136\u540e\u5728manifest.json\u4e2d\u914d\u7f6eApp\u672c\u5730\u63d2\u4ef6<\/p>\n<\/div>\n

    \"\"<\/p>\n

    \n
    \n

    (2) uniapp\u4e2d\u8c03\u7528\u63d2\u4ef6\u793a\u4f8b<\/p>\n

    \n
    test1<\/span>:<\/span>function<\/span>(<\/span>)<\/span>{<\/span>\r\n    const<\/span> myTest =<\/span> uni.<\/span>requireNativePlugin<\/span>(<\/span>'My-Test'<\/span>)<\/span>;<\/span>\r\n    myTest.<\/span>showToast<\/span>(<\/span>\"\u63d2\u4ef6\u6d4b\u8bd5Toast\u63d0\u9192\"<\/span>)<\/span>;<\/span>\r\n}<\/span>,<\/span>\r\ntest2<\/span>:<\/span>function<\/span>(<\/span>)<\/span>{<\/span>\r\n    const<\/span> myTest =<\/span> uni.<\/span>requireNativePlugin<\/span>(<\/span>'My-Test'<\/span>)<\/span>;<\/span>\r\n    var<\/span> options =<\/span> {<\/span>\r\n        name:<\/span>\"liy\"<\/span>,<\/span>\r\n        sex:<\/span>\"woman\"<\/span>\r\n    }<\/span>;<\/span>\r\n    myTest.<\/span>getResult<\/span>(<\/span>options,<\/span> res<\/span> =><\/span> {<\/span>\/\/options\u4e3a\u53c2\u6570\uff0cres\u4e3a\u56de\u8c03\u7ed3\u679c<\/span>\r\n        console.<\/span>log<\/span>(<\/span>\"\u83b7\u53d6\u7ed3\u679c:\"<\/span> +<\/span> JSON<\/span>.<\/span>stringify<\/span>(<\/span>res)<\/span>)<\/span>;<\/span>\r\n    }<\/span>)<\/span>;<\/span>\r\n}<\/span>\r\n<\/code><\/pre>\n<\/div>\n
    \n
    \n
    <\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

    1. \u51c6\u5907\u5de5\u4f5c 1.1 \u4e0b\u8f7dHBuilder\u79bb\u7ebf\u6253\u5305Android\u7248SDK( 5+SDK)\uff0c\u5e76\u5c06\u5176\u4e2d\u7684UniPlugin-Hello-AS\u5de5\u7a0b\u5bfc\u5165AndroidStudio 1.2 \u5728UniPlugin-Hello-AS\u5de5\u7a0b\u4e2d\u521b\u5efa\u63d2\u4ef6Module\uff0c\u5e76\u7f16\u8f91Module\u7684build.gradle\u6587\u4ef6\u4f7fModule\u5177\u5907\u5f00\u53d1uni-app\u63d2\u4ef6\u7684\u80fd\u529b (1) \u6dfb\u52a0\u4f9d\u8d56\u5e93 \u6ce8\u91ca\u9ed8\u8ba4\u7684\u57fa\u7840\u4f9d\u8d56\u5e93\uff1aAndroid Studio\u9ed8\u8ba4\u4f1a\u5728dependencies\u8282\u70b9\u4e0b\u6dfb\u52a0\u4e00\u4e9b\u57fa\u672c\u4f9d\u8d56\u5e93\uff0c\u5982\u4e0b\u56fe\u7ea2\u6846\u5185\u7684\u5f15\u7528\u6ce8\u91ca\u6389 \u6216 \u6539\u4e3acompileOnly\u4f9d\u8d56\u65b9\u5f0f \u6ce8\u610f\uff1alibs\u6587\u4ef6\u5939\u4e0b\u7684jar\u6587\u4ef6\u5df2\u6539\u4e3acompileOnly …<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31],"tags":[],"_links":{"self":[{"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/posts\/3123"}],"collection":[{"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/comments?post=3123"}],"version-history":[{"count":5,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/posts\/3123\/revisions"}],"predecessor-version":[{"id":3133,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/posts\/3123\/revisions\/3133"}],"wp:attachment":[{"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/media?parent=3123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/categories?post=3123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.195440.com\/wp-json\/wp\/v2\/tags?post=3123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}