杭州Android培训
达内杭州Android培训中心

13732203138

热门课程

Android Studio如何混淆自己开发的SDK产品

  • 时间:2019-01-04 14:13
  • 发布:杭州android中心
  • 来源: Android知识

Android Studio如何混淆自己开发的SDK产品?

做过SDK开发的同学,应该都很熟悉。SDK产品的使用场景,最常见的无非这么几种。

  • 公司作为平台,提供SDK给第三方开发者使用,方便接入相关平台级的某些功能。

  • 作为某个子系统,开发一个单独的SDK,提供给公司内其他部门或者合作公司使用,避免项目的重复开发,也利于项目的统一管理。

  • 其他

那么既然SDK要提供给第三方企业或者是其他部门使用,那大家肯定是要混淆一下代码的吧。(虽然,混淆了也没什么毛用…起码提高一丢丢的阅读难度)

进入正题。

在Eclipse中,使用Proguard混淆代码,就不介绍了。不懂的,自行网上查阅,资料很多。另外一种方法,使用ProguardGUI混淆jar包,这里也不详细介绍了,自行网上查阅。

在Android Studio中开发SDK,通常是把SDK功能模块单独设置为一个Module。然后,用app来模拟第三方开发者的项目。

1.SDK Module中,build.gradle 开启混淆开关

buildTypes{        release{            minifyEnabledtrue           proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'       }    }

2.build.gradle中,自定义混淆task

taskmakeJarProguard(type: proguard.gradle.ProGuardTask, dependsOn:"build"){    // 未混淆的jar   injars'build/intermediates/bundles/release/classes.jar'   // 混淆后的jar路径   outjars'build/libs/test-sdk.jar'   // 具体需要keep住的类   configuration'proguard-rules.pro'}

3.SDK Module中,自定义proguard-rules.pro。(下面是个例子,具体的根据自己的项目进行设置混淆规则)

-libraryjars /jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar -verbose -dontskipnonpubliclibraryclasses -ignorewarnings -dontoptimize -keepclasscom.blst.test{   publicprotected<fields>;    publicprotected<methods>; } -keepclasscom.blst.test.listener.*{   *; } -keepclasscom.blst.test.model.*{   *; }

4.执行task(makeJarProguard),会生成build/libs/test-sdk.jar.

注意的点:这种方式,生成的test-sdk.jar,会包含了您项目中应用的libs下的其他第三方库的jar包。如果您不想包含合并libs下的jar。在执行task之前,请设定配置如下:

dependencies {//   implementation fileTree(dir:'libs',include:['*.jar'])    implementation'com.android.support:appcompat-v7:26.1.0'   testImplementation'junit:junit:4.12'   androidTestImplementation'com.android.support.test:runner:1.0.1'   androidTestImplementation'com.android.support.test.espresso:espresso-core:3.0.1'   provided files('libs/第三方的库名称.jar') }

provided :只在编译的时候加载该jar,生成的混淆test-sdk.jar不会包含该jar。

预约申请免费试听课

怕钱不够?就业挣钱后再付学费!    怕学不会?从入学起,达内定制课程!     担心就业?达内多家实践企业供你挑选!

上一篇:没有上一篇了
下一篇:Android中Activity横屏、竖屏、全屏应该如何处理?
选择城市和中心
贵州省

广西省

海南省