1. 程式人生 > >Android Studio引用另一個模組module並且使用其jar包的方法

Android Studio引用另一個模組module並且使用其jar包的方法

原文:https://blog.csdn.net/weixue9/article/details/80774418 

<article>         <div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">                                 <div class="article-copyright">                     版權宣告:本文為博主原創文章,未經博主允許不得轉載。                    https://blog.csdn.net/qq_21358401/article/details/79042434                </div>                                             <div class="markdown_views">                             <!-- flowchart 箭頭圖示 勿刪 -->                             <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>                             <h2 id="適用情形"><a name="t0"></a>適用情形</h2>

<pre class="prettyprint" name="code"><code class="hljs ruby has-numbering">最近碰上這樣一種情況<span class="hljs-symbol">:</span> app需要引用jni功能 然後jni相關的功能被封裝成一個android library 模組<span class="hljs-class"><span class="hljs-keyword">module</span></span>

然後在app模組<span class="hljs-class"><span class="hljs-keyword">module</span>中需要引用<span class="hljs-title">jni</span> <span class="hljs-title">module</span>的一個<span class="hljs-title">java</span>類</span> 直接在app模組中引用這個類 提示無法解析這個類</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li></ul></pre>

<pre class="prettyprint" name="code"><code class="hljs ruby has-numbering">android中引用別的<span class="hljs-class"><span class="hljs-keyword">module</span> 需要加入對它的依賴</span> 有兩種新增方式 <span class="hljs-number">1</span>. 直接修改build.gradle指令碼引入              <span class="hljs-number">2</span>. android studio集成了這個功能 直接新增</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li></ul></pre>

<h2 id="修改buildgradle實現"><a name="t1"></a>修改build.gradle實現</h2>

<pre class="prettyprint" name="code"><code class="hljs rust has-numbering">app 模組的 build.gradle:   dependencies {       implementation fileTree(include: [<span class="hljs-string">'*.jar'</span>], <span class="hljs-keyword">dir</span>: <span class="hljs-string">'libs'</span>)       implementation <span class="hljs-string">'com.android.support:appcompat-v7:26.1.0'</span>       implementation <span class="hljs-string">'com.android.support.constraint:constraint-layout:1.0.2'</span>       testImplementation <span class="hljs-string">'junit:junit:4.12'</span>       androidTestImplementation <span class="hljs-string">'com.android.support.test:runner:1.0.1'</span>       androidTestImplementation <span class="hljs-string">'com.android.support.test.espresso:espresso-core:3.0.1'</span>

      implementation project(<span class="hljs-string">':rkmpp'</span>) <span class="hljs-comment">// 新增依賴模組</span>   }</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li></ul></pre>

<pre class="prettyprint" name="code"><code class="hljs ruby has-numbering">implementation project(<span class="hljs-string">':rkmpp'</span>) rkmpp是要引用的<span class="hljs-class"><span class="hljs-keyword">module</span>名</span></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li></ul></pre>

<h2 id="android-studio修改"><a name="t2"></a>android studio修改</h2>

<pre class="prettyprint" name="code"><code class="hljs ruby has-numbering"><span class="hljs-number">1</span>. 右鍵模組 -&gt; open <span class="hljs-class"><span class="hljs-keyword">module</span> <span class="hljs-title">settings</span></span> <span class="hljs-number">2</span>. 選擇<span class="hljs-constant">Dependencies</span>選項 <span class="hljs-number">3</span>. 左下角有 + 符號 點選它 選擇<span class="hljs-number">3</span> <span class="hljs-constant">Module</span> <span class="hljs-constant">Dependency</span> <span class="hljs-number">4</span>. 彈出的選項框中選要新增的<span class="hljs-class"><span class="hljs-keyword">module</span> 確定</span></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li></ul></pre>

<pre class="prettyprint" name="code"><code class="hljs avrasm has-numbering">兩種修改方法的效果是一致的 實際上都是修改build<span class="hljs-preprocessor">.gradle</span>指令碼</code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li></ul></pre>            </div>                         <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet">                 </div>                                                          <script>                         (function(){                             function setArticleH(btnReadmore,posi){                                 var winH = $(window).height();                                 var articleBox = $("div.article_content");                                 var artH = articleBox.height();                                 if(artH > winH*posi){                                     articleBox.css({                                         'height':winH*posi+'px',                                         'overflow':'hidden'                                     })                                     btnReadmore.click(function(){                                         articleBox.removeAttr("style");                                         $(this).parent().remove();                                     })                                 }else{                                     btnReadmore.parent().remove();                                 }                             }                             var btnReadmore = $("#btn-readmore");                             if(btnReadmore.length>0){                                 if(currentUserName){                                     setArticleH(btnReadmore,3);                                 }else{                                     setArticleH(btnReadmore,1.2);                                 }                             }                         })()                     </script>                     </article>

在module中匯入了***.jar或者線上的包,在app中如果想引用這個jar裡相關的內容時,發現根本引用不到,會提示你add library/*****.jar 一大串,你回車一下或者點一下沒反應,根本沒有用。

只需把module下gradle裡相關jar的implementation改為api即可,因為implementation 修飾的只能在當前module中引用,你在app下是引用不了的,你改完重新編譯下即可進行引用了。