Android將Activity打成jar包供第三方調用(解決資源文件不能打包的問題)
前段時間需要做一個sdk項目,正苦悶用什麼打包方式,要是使用jar打包,jar只能打包class文件,要想把資源文件打包進去
比較麻煩的意見事情,界面不多的話可以使用反射調用,把資源文件都通過這個反射的R引用出來。
String packageName = context.getPackageName();
Class r = null;
int id = 0;
try {
r = Class.forName(packageName + .R);
Class[] classes = r.getClasses();
Class desireClass = null;
for (int i = 0; i < classes.length; ++i) {
if (classes[i].getName().split(\$)[1].equals(className)) {
desireClass = classes[i];
break;
}
}
if (desireClass != null)
id = desireClass.getField(name).getInt(desireClass);
現在就沒有那麼麻煩了,Android studio給我們提供一種更簡便的方式,可以同時把class和res文件打包進去,現在的support v7 和gson-2.21就是aar打包方式
打包方法:
我們先把想要打包成sdk的項目做成Android libraries B不要建成Android project 然後我們建立一個新的Android project A 去調用寫好的libraries B
運行後,studio就自動把我們的librarys B打包成aar包了,這就是我們想要的sdk了(路徑:libraries Buildoutputsaar)
使用方法:
1、把打好的aar包拷貝到需要引用的Android工程libs目錄下
2、修改Android studio的gradle設置
epositories{
flatDir{
dirs 'libs'
}
}
dependencies {
// compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
compile 'com.android.support:appcompat-v7:19.+'
compile project(name':app2',ext:'aar')//導入app2.aar並執行
}
看看external lib下是不多了一個app2 (包含一個jar和一個res) 就表示成功了