2013-06-13 18 views
2

也許有人可以幫助我。 如何生成類似於位於android sdk-platform中的android.jar的jar庫。 應該刪除所有方法的實現,並與throw new RuntimeException("Stub!");這樣的替換:只有可用方法和成員列表的庫jar生成

AppWidgetManager() { throw new RuntimeException("Stub!"); } 
    public NdefMessage(NdefRecord[] records) { throw new RuntimeException("Stub!"); } 
    public NdefRecord[] getRecords() { throw new RuntimeException("Stub!"); } 

所有公共成員也存在。

+0

你爲什麼要這麼做? –

回答

0

如果沒有人提供解決方案,這是一個非常簡單的情況。

最簡單的可能是使用java的反射,從jar讀取所有類並生成java源代碼。

然後有像ASM這樣的庫;字節代碼操作以及Java dom源代碼庫。

+0

javassist不是太複雜 – kutschkem

+0

@kutschkem:也許嘗試把它放在一個答案,加載一個類,刪除很多,插入一個投擲,寫課程。一個不錯的任務,得到一些SO點。 –

0

用Javassist一個簡單的解決方案(我沒測試過,但大概,這應該是吧):

ClassPool pool = new ClassPool(); 
pool.appendClassPath("pathToYourJar"); 
CtClass clazz = pool.get("Your class"); 

CtMethod throwingMethod = CtMethod.make("throw new RuntimeException();",clazz); 

for(CtMethod method : clazz.getDeclaredMethods()){ 
    method.setBody(throwingMethod,null); 
} 

clazz.writeFile("pathToYourNewClassDirectory"); 



//zip the classes in your new class directory into a jar, 
// add a manifest if you need to, deploy to where you want it 
相關問題