前言:在eclipse中我們知道如何將一個(gè)項(xiàng)目導(dǎo)出為jar包,現(xiàn)在普遍AndroidStuido開(kāi)發(fā),這里一步一步詳加介紹AS項(xiàng)目打包成jar,jar和arr的使用
為了供其它項(xiàng)目使用,將項(xiàng)目打包成jar
1.像平常一個(gè)樣新建一個(gè)項(xiàng)目(步驟省略)
2.(在步驟1的基礎(chǔ)上)點(diǎn)擊File-->New-->New Module—>選擇Android Library-->點(diǎn)擊Next(如下圖:)
創(chuàng)建之前我先在librarydemo工程中建一個(gè)測(cè)試類,方便測(cè)試調(diào)用:
在AndroidStudio中,創(chuàng)建的Model項(xiàng)目下:
個(gè)人覺(jué)得還是用as提供的aar包比較好,編譯完就生成了aar了,不用擔(dān)心資源問(wèn)題,
1. aar使用:
導(dǎo)入aar(jar一樣):
public class MResource { public static int getIdByName(Context context, String className, String resName) { String packageName = context.getPackageName(); int id = 0; try { Class r = Class.forName(packageName ".R"); Class[] classes = r.getClasses(); Class desireClass = null; for (Class cls : classes) { if (cls.getName().split("\\$")[1].equals(className)) { desireClass = cls; break; } } if (desireClass != null) { id = desireClass.getField(resName).getInt(desireClass); } } catch (Exception e) { e.printStackTrace(); } return id; }}
這里演示項(xiàng)目中打開(kāi)jar中的activity的實(shí)例
這里給出jar中activity的代碼:
public class JarActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(MResource.getIdByName(this, "layout", "jar_layout")); ImageView mPlayerLogo = (ImageView) this.findViewById(MResource.getIdByName(this, "id", "logo")); mPlayerLogo.setImageResource(MResource.getIdByName(this, "drawable", "ic_launcher")); }}
這里:利用反射根據(jù)資源名字獲取資源ID加載布局 設(shè)置圖片
在項(xiàng)目中打開(kāi)jar的JarActivity的實(shí)現(xiàn)代碼如下:
(注:由于jar沒(méi)有布局文件和資源文件,所以需要把布局(jar_layout)copy到項(xiàng)目中,aar則不需要)
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_jar).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClassName(getApplication(), "com.zhh.librarydemo.JarActivity"); startActivity(intent); } }); }}
jar_layout布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@ id/logo" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
在清單文件中注冊(cè):
<activity android:name="com.zhh.librarydemo.JarActivity"/>
來(lái)源:http://www.icode9.com/content-4-188001.html
聯(lián)系客服