Android打包SDK供第三方調用


創建庫工程

新建一個android工程,並創建一個LibActivity
LibActivity代碼如下:
</pre><pre name="code" class="java">package test.lib.activity;

import com.example.libproject.R;
import android.app.Activity;
import android.os.Bundle;

public class LibActivity extends Activity {


		@Override
		protected void onCreate(Bundle savedInstanceState) {
			setContentView(R.layout.lib);
			super.onCreate(savedInstanceState);
		}
}
布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="60dip"
        android:layout_centerInParent="true"
        android:textSize="20sp"
        android:textColor="#868"
        android:gravity="center"
        android:textStyle="bold"
        android:text="這是LibProject中的Layout"/>
</RelativeLayout>
工程文件結構如下:

目前已經生成一個簡單的Android工程,但我們需要的是一個LibProject,所以需要通過在項目上右鍵選擇Properties(Alt+Enter)設置一下該項目是一個library項目





關於資源文件不能打包的問題

因為資源文件被打到jar里是不能被程序找到的,而且在把源碼打成jar包時,調用R文件得到的id,如R.layout.lib,這個id將會以一個固定的值被嵌入代碼中。所以別的工程引用我們的jar的時候會出現資源找不到的情況(即使你把資源文件copy到工程res目錄)。

解決辦法:新建一個類,名為Res,代碼如下:
<pre name="code" class="java">package test.lib.activity.lib;

import com.example.libproject.R;

public class Res {

    public static final class layout {
        public static int lib(){
        	return R.layout.lib;
        }
    }
}
 該類定義一些方法用於獲取資源文件的id,直接返回R文件中資源文件的id,方法名為資源文件的名稱。 
        
修改LibActivity中通過R文件獲取資源文件ID的地方為Res類中的方法,修改后代碼如下:
package test.lib.activity;

import android.app.Activity;
import android.os.Bundle;

public class LibActivity extends Activity {

		@Override
		protected void onCreate(Bundle savedInstanceState) {
			//修改
			setContentView(Res.layout.lib());
			super.onCreate(savedInstanceState);
		}
}

把源碼打成jar包

在工程的src目錄上右鍵選擇Export——Java——JAR file


注意:在打包時,Res類不需要打到jar包里,這里是把Res類放在test.lib.activity.lib目錄下,所以打包時把test.lib.activity.lib包前面的勾去掉
在JAR file選項設置一下jar文件存放路徑,點擊finish,最后可以在指定的目錄下找到自己生成的jar文件

最后把jar包放到LibProject的res/libs目錄下,然后把除了Res類的其它類文件都刪除(這步可選,如果你不想把你的源碼公開的話,或者出於安全考慮)


第三方應用調用SDK

第三方應用調用你的SDK時,只需要把你的LibProject導入到自己的工作空間,並引用你的LibProject,然后在清單文件配置相關的組件和權限即可。

引用LibProject

調用代碼:
package test.lib;

import test.lib.activity.LibActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.example.libtest.R;

public class TestActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		setContentView(R.layout.test);
		super.onCreate(savedInstanceState);
	}
	
	public void click(View view) {
		//點擊按鈕跳轉到LibProject中的LibActivity
		startActivity(new Intent(this, LibActivity.class));
	}
}




效果圖:






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM