AndroidStudio 编译配置

Module中合并第三方jar包

  • 前段时间配置的,没有及时记录,需要重新整理及时更新,不然又忘的差不多了

AndroidStudio新建Module

参照Android Developer官方文档 https://developer.android.com/studio/projects/android-library 描述新建一个Module “File > New > New Module”,根据实际需要选择Jar Module可以选择Android Library(.aar)或者Java Library(.jar),区别在于Android Library可以支持资源共享。

依赖原生模块jar包的解决办法

Studio配置改动

  • gradle修改src目录
    Android源码目录树通常是如下结构

    ---src/
    ---res/
    ---AndroidManifest.xml
    ---Android.mk
    

    但是在AndroidStudio建立的应用工程目录结构通常是在app/src/main目录下:

    ---java/
    ---res/
    ---AndroidManifest.xml
    

    为了在不改变目录结构的情况下将源码导入AndroidStudio,需要在app/build.gradle文件中增加sourceSets配置:

    android {
    	...
    	sourceSets {
    		main {
    			java.srcDirs = ['../src']
    			res.srcDirs = ['../res']
    			manifest.srcFile = '../AndroidManifest.xml'
    		}
    	}
    	...
    }
    
  • framework hide接口调用

  • 如何使用及隐藏platform签名
    app/build.gradle中增加如下内容:

    def keystorePropertiesFile = rootProject.file(".keystore")
    def keystoreProperties = new Properties();
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    android {
    	signingConfigs {
        	debug {
            	keyAlias keystoreProperties['keyAlias']
           		keyPassword keystoreProperties['keyPassword']
            	storeFile file(keystoreProperties['storeFile'])
            	storePassword keystoreProperties['storePassword']
        	}
        	release {
            	keyAlias keystoreProperties['keyAlias']
            	keyPassword keystoreProperties['keyPassword']
            	storeFile file(keystoreProperties['storeFile'])
            	storePassword keystoreProperties['storePassword']
        	}
    	}
    }
    

    .keystore和platform.jks签名文件都放在项目的根目录下即可。

  • jar包compileonly设置
    实际调试过程中framework.jar不需要编译到apk中,可以防止apk过大和函数过多导致的gradle编译失败的问题,需要修改app/build.gradle:

    dependencies {
    	...
    	compileOnly files('libs/framework.jar')
    	...
    }
    

    同时修改根目录下的build.gradle:

    allprojects {
    	...
    	gradle.projectsEvaluated {
        	tasks.withType(JavaCompile) {
            	options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar'
        	}
    	}
    	...
    }
    
  • 如果需要依赖多个compileOnly的jar包,在bootclasspath中使用":"分隔路径,不要多次配置compilerArgs变量,会被最后一个配置覆盖

  • 移除重复的依赖包"Program type already present" https://blog.csdn.net/Calvin_zhou/article/details/80880501

源码编译改动

  • 导入原生jar包
    以framework.jar为例,需要将对应源码工程的out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar copy到 App project的app/libs/目录下,然后右键classes.jar,“Add as libraries”即可。
  • .jack文件makefile修改
    Android 8.0之后默认开启Jack,好多源码模块编译后都只生成classes.jack文件,需要在对应模块的Android.mk中增加JACK_ENABLED := disabled,然后重新make module,在对应的intermediates中可以找到classes.jar。千万不要全编源码,会导致其它依赖这个jack文件的模块编不过。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值