利用android studio生成jar包,制作自己的SDK

開(kāi)展項(xiàng)目合作時(shí),基于模塊化思想,對(duì)方要用到你的程序,而你又不想將源代碼給對(duì)方,通常會(huì)將程序進(jìn)行打包生成jar,并作混淆處理。
1.創(chuàng)建項(xiàng)目
? ? ? ?【File】—【New Module】—【Android Library】,命名,然后編輯代碼。
? ? ? ?新建一個(gè)Class文件,然后添加一個(gè)方法(即后面jar包里要調(diào)用的方法)。

創(chuàng)建類(lèi)測(cè)試:
public class MyJarTest {
? ?public static String testJarString() {
? ? ? ?return "測(cè)試生成的Jar包";
? ?}
}
2.配置build.gradle文件
? ? ? ?AS中進(jìn)行代碼混淆需要在build.gradle文件和proguard-rules.pro文件中進(jìn)行設(shè)置(可以通過(guò)jd-gui工具對(duì)比混淆前后效果):
? ? ? ?你的library(myjarlibrary)庫(kù)下打開(kāi)build.gradle文件,在末尾加上下述代碼。
task makeJar(type: Copy) {
? ? //刪除之前編譯混淆jar包
? ? //delete 'build/outputs/test.jar'
? ? delete 'build/outputs/test.jar'
? ? //jar文件來(lái)源(AS3.0前)
? ? //from('build/intermediates/bundles/release/')
? ? //jar文件來(lái)源(AS3.0后)
? ? from('build/intermediates/packaged-classes/release/')
? ? //生成jar文件路徑(可改)
? ? into('build/outputs/')
? ? //jar文件名
? ? include('classes.jar')
? ? //命名為test.jar
? ? rename('classes.jar', 'test.jar')
}
makeJar.dependsOn(build)
? ? ? ?點(diǎn)擊Sync Now,等Android Studio運(yùn)行完成后,點(diǎn)擊右上角的Gradle按鈕,然后點(diǎn)開(kāi)我們的module(就是之前建的 sdklibrary),你取的什么名字在這就是什么名字,點(diǎn)開(kāi)只有在點(diǎn)開(kāi)other,然后再展開(kāi)的方法里面找到我們的makeJar。
3.運(yùn)行
? ? ? ?【Gradle】—【New Module(myjarlibrary)】—【other】—【make】
? ? ? ?雙擊makeJar按鈕,等到運(yùn)行結(jié)束,就可以看到。build/intermediates/bundles/release/這個(gè)文件夾下面生成了classes.jar文件,并將jar存放到指定路徑(如build/outputs/test.jar)。
? ? ? ?注:新版AS:intermediates/packaged-classes 替換intermediates/bundles了。




? ? ? ?將jar包導(dǎo)入你想要用的工程里,然后調(diào)用相應(yīng)的方法就好了。
4.測(cè)試
將test.Jar包導(dǎo)入依賴(lài)后編寫(xiě)代碼測(cè)試。
public class MainActivity extends AppCompatActivity {
? ? private TextView tvTxt;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? tvTxt = findViewById(R.id.tv_main_txt);
? ? ? ? tvTxt.setText(MyJarTest.testJarString());
? ? }
}
效果:

————————————————