1.拷贝jar到源码的libs目录
2.编辑AndroidManifest.xml文件
相关说明:
1).添加android:sharedUserId=”android.uid.system”之后应用会变成系统应
用,无需在动态申请权限,直接在AndroidManifest.xml注册权限即可,但是
添加之后应用无法再直接调试,即无法点击开发工具上的
进行调试。如果需要调试时必须需要打包成apk并且进行系统签名, apk的签名
需要保持与系统签名一致。通过 adb install -r xxxxx.apk 进行安装。如果
之前安装过旧版则需要将之前安装的进行卸载adb uninstall [应用包名]。
2).相关权限声明后无需再进行动态申请权限
3 修改[moduleName]\build.gradle文件
1)导入groovy.xml.XmlUtil包
2)修改libs顺序
Android拥有大量的@hide方法和类, google处于安全考虑进行了隐藏和未公开,每个平台或多或少都会在framework进行方法的定义和删减,所以Androidstudio使用的SDK与运行的平台SDK存在极大的差异。也出现了以下情况google定义了com.****.xxxx();方法,各个平台也定义了com.****.xxxx();如果直接将我们的framework.jar导入,使用时依旧会通过配置列表,去找寻第一引用进行编译。文件位置位于
比较旧版本的文件地址可能在module同级的目录一般为[moduleName].iml,具体得看项目实际产生的位置。
在android节点内添加以下代码
android { ……. preBuild { doLast { def imlFile = "$rootProject.projectDir\\.idea\\modules\\$project.name\\$rootProject.name"+"."+project.name+'.iml' println 'Change ' + imlFile try { def parsedXml = (new XmlParser()).parse(imlFile) def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } parsedXml.component[1].remove(jdkNode) def sdkString = "Android API " +android.compileSdkVersion.substring("android-".length()) + " Platform" new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName':sdkString, 'jdkType': 'Android SDK']) XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) } catch (FileNotFoundException e) { println e.message } } }
比较新的Android studio可以单独在build.gradle运行相应的方法,点击1以后会run选项卡进行打印
此时需要观察Change后面的字符与当前项目的iml文件是不是一致的,如果不一致则需要重新定义imlFile常量使其与当前项目的iml文件一致。 如果成功执行后项目的iml文件中Android的sdb会被移动到最底部,而develop.jar则会在最顶部。
2.[moduleName]\build.gradle文件底部添加以下代码
//修改sdk编译顺序(定制的sdk放到原生的sdk之前)
gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.bootstrapClasspath = files(file('libs/develop.jar'),options.bootstrapClasspath) } }