android studio使用so怎么使用

你的位置: &
> 谷歌开发工具android studio启动不了、打不开、不能用的解决方法
谷歌开发工具android studio启动不了、打不开、不能用的解决方法
更新时间:
收藏本页(Ctrl+D)
手机扫描查看
扫描二维码
android studio安装及使用教程
android studio启动不了、打不开、不能用的解决方法
android Stuido Mac系统安装使用图文教程
android Stuido win7系统安装使用图文教程
Android Studio下下来之后竟然启动不了,上网找了些资料后成功了。
1,先来到Android Studio的bin目录下,
2.修改studio.bat 第72行GOTO end 在他前面加上PAUSE 用于查看错误消息。
3.进入cmd 然后指向Android Studio目录下 运行studio.bat
爆出了这个错误,环境变量肯定是没问题的,因为我有N个ECLIPSE在用。
4.去修改android-studio\bin目录下的studio.exe.vmoptions 去除第5行的 -XX:+UseCodeCacheFlushing
最后 就看到令我激动的图了。
【上一篇】
【下一篇】
看完这篇文章有何感觉?
(您的评论需要经过审核才能显示,请文明发言!)&&剩余字数:
点击图片更换
统一文章资讯频道声明
1、 所有来源标注为统一下载站或统一文章的内容版权均为本站所有,若您需要引用、转载,请注明来源及原文链接即可,如涉及大面积转载,请来信告知,获取授权。
2、 本站所提供的文章资讯等内容均为作者提供、网友推荐、互联网整理而来,仅供学习参考,如有侵犯您的版权,请及时联系我们,并提供原文出处等,本站将在三个工作日内修正。
3、 若您的网站或机构从本站获取的一切资源进行商业使用,除来源为本站的资料需与本站协商外,其他资源请自行联系版权所有人。
4、 未经统一下载站允许,不得盗链、盗用本站资源;不得复制或仿造本网站,不得在非统一下载站所属的服务器上建立镜像,统一下载站对其自行开发的或和他人共同开发的所有内容、技术手段和服务拥有全部知识产权,任何人不得侵害或破坏,也不得擅自使用。
文章教程分类
本站资源均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时撤销相应资源。
Copy . All Rights Reserved.Android Studio 使用 Gradle 打包 Jar - 安卓 - 伯乐在线
& Android Studio 使用 Gradle 打包 Jar
Android Studio 打 Jar 包一直是一个麻烦的事,按照网上现有的教程,打包一个混淆的 jar 需要完成下列步骤:
将 plugin 修改为 library 后 build 出 aar,再提取 aar 里面的 classes.jar
使用 jarjar 等工具剔除多余的 class
对第二步得到的 jar 进行混淆
无论哪一步,所做的工作量都不少。于我个人而言,相当麻烦,于是花了些时间研究了下 Gradle 打 Jar 包。
废话不多说,先上代码(注:只在 Gradle Android Plugin 1.2.3 测试过)
import com.android.build.gradle.AppPlugin
import proguard.gradle.ProGuardTask
apply plugin: 'com.android.application'
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "org.chaos.demo.jar"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
buildTypes {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//dependsOn 可根据实际需要增加或更改
task buildJar(dependsOn: ['compileReleaseJava'], type: Jar) {
appendix = "demo"
baseName = "androidJar"
version = "1.0.0"
classifier = "release"
extension = "jar"
//最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]
archiveName = "AndroidJarDemo.jar"
//需打包的资源所在的路径集
def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];
//初始化资源路径集
from srcClassDir
//去除路径集下部分的资源
exclude "org/chaos/demo/jar/MainActivity.class"
exclude "org/chaos/demo/jar/MainActivity\$*.class"
exclude "org/chaos/demo/jar/BuildConfig.class"
exclude "org/chaos/demo/jar/BuildConfig\$*.class"
exclude "**/R.class"
exclude "**/R\$*.class"
//只导入资源路径集下的部分资源
include "org/chaos/demo/jar/**/*.class"
//注: exclude include 支持可变长参数
task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) {
//Android 默认的 proguard 文件
configuration android.getDefaultProguardFile('proguard-android.txt')
//会根据该文件对 Jar 进行混淆,注意:需要在 manifest 注册的组件也要加入该文件中
configuration 'proguard-rules.pro'
String inJar = buildJar.archivePath.getAbsolutePath()
//输入 jar
injars inJar
//输出 jar
outjars inJar.substring(0, inJar.lastIndexOf('/')) + "/proguard-${buildJar.archiveName}"
//设置不删除未引用的资源(类,方法等)
dontshrink
AppPlugin appPlugin = getPlugins().findPlugin(AppPlugin)
if (appPlugin != null) {
List&String& runtimeJarList
if (appPlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {
runtimeJarList = appPlugin.getRuntimeJarList()
} else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {
runtimeJarList = android.getBootClasspath()
runtimeJarList = appPlugin.getBootClasspath()
for (String runtimeJar : runtimeJarList) {
//给 proguard 添加 runtime
libraryjars(runtimeJar)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
import com.android.build.gradle.AppPluginimport proguard.gradle.ProGuardTask&apply plugin: 'com.android.application'&android {&&&&compileSdkVersion 22&&&&buildToolsVersion "22.0.1"&&&&&defaultConfig {&&&&&&&&applicationId "org.chaos.demo.jar"&&&&&&&&minSdkVersion 22&&&&&&&&targetSdkVersion 22&&&&&&&&versionCode 1&&&&&&&&versionName "1.0"&&&&}&&&&buildTypes {&&&&&&&&release {&&&&&&&&&&&&minifyEnabled true&&&&&&&&&&&&proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'&&&&&&&&}&&&&}}&dependencies {&&&&compile fileTree(dir: 'libs', include: ['*.jar'])}&//dependsOn 可根据实际需要增加或更改task buildJar(dependsOn: ['compileReleaseJava'], type: Jar) {&&&&&appendix = "demo"&&&&baseName = "androidJar"&&&&version = "1.0.0"&&&&classifier = "release"&&&&&//后缀名&&&&extension = "jar"&&&&//最终的 Jar 包名,如果没设置,默认为 [baseName]-[appendix]-[version]-[classifier].[extension]&&&&archiveName = "AndroidJarDemo.jar"&&&&&//需打包的资源所在的路径集&&&&def srcClassDir = [project.buildDir.absolutePath + "/intermediates/classes/release"];&&&&//初始化资源路径集&&&&from srcClassDir&&&&&//去除路径集下部分的资源//&&&&exclude "org/chaos/demo/jar/MainActivity.class"//&&&&exclude "org/chaos/demo/jar/MainActivity\$*.class"&&&&exclude "org/chaos/demo/jar/BuildConfig.class"&&&&exclude "org/chaos/demo/jar/BuildConfig\$*.class"&&&&exclude "**/R.class"&&&&exclude "**/R\$*.class"&&&&&//只导入资源路径集下的部分资源&&&&include "org/chaos/demo/jar/**/*.class"&&&&&//注: exclude include 支持可变长参数}&task proguardJar(dependsOn: ['buildJar'], type: ProGuardTask) {&&&&//Android 默认的 proguard 文件&&&&configuration android.getDefaultProguardFile('proguard-android.txt')&&&&//会根据该文件对 Jar 进行混淆,注意:需要在 manifest 注册的组件也要加入该文件中&&&&configuration 'proguard-rules.pro'&&&&&String inJar = buildJar.archivePath.getAbsolutePath()&&&&//输入 jar&&&&injars inJar&&&&//输出 jar&&&&outjars inJar.substring(0, inJar.lastIndexOf('/')) + "/proguard-${buildJar.archiveName}"&&&&&//设置不删除未引用的资源(类,方法等)&&&&dontshrink&&&&&AppPlugin appPlugin = getPlugins().findPlugin(AppPlugin)&&&&if (appPlugin != null) {&&&&&&&&List&String& runtimeJarList&&&&&&&&if (appPlugin.getMetaClass().getMetaMethod("getRuntimeJarList")) {&&&&&&&&&&&&runtimeJarList = appPlugin.getRuntimeJarList()&&&&&&&&} else if (android.getMetaClass().getMetaMethod("getBootClasspath")) {&&&&&&&&&&&&runtimeJarList = android.getBootClasspath()&&&&&&&&} else {&&&&&&&&&&&&runtimeJarList = appPlugin.getBootClasspath()&&&&&&&&}&&&&&&&&&for (String runtimeJar : runtimeJarList) {&&&&&&&&&&&&//给 proguard 添加 runtime&&&&&&&&&&&&libraryjars(runtimeJar)&&&&&&&&}&&&&}}
为什么已在 manifest 注册的组件需要在 .pro 文件声明对应的混淆规则?
可能各位注意到 proguardJar task 的第二行注释,在 apk 的打包过程中,aapt 会在解析 manifest 后生成一个用于不混淆 manifest 中已注册的组件的规则文件。Gradle Android Plugin 中配置上述 aapt 生成的规则文件的代码如下:
protected File createProguardTasks(@NonNull BaseVariantData variantData,
@Nullable BaseVariantData testedVariantData) {
// also the config file output by aapt
proguardTask.configuration(variantData.processResourcesTask.proguardOutputFile)
protected File createProguardTasks(@NonNull BaseVariantData variantData,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @Nullable BaseVariantData testedVariantData) {&&&&......&&// also the config file output by aapt&&proguardTask.configuration(variantData.processResourcesTask.proguardOutputFile)&&......}
碍于个人能力原因,获取不到 processResourcesTask 的实例,所以目前只能先添加对应的组件到规则文件中,还望知道怎么获取的朋友能够分享下,谢谢。
不需要混淆则运行命令
gradle buildJar
./gradlew buildjar
gradle buildJar或./gradlew buildjar&
需要混淆则运行
gradle proguardJar
./gradlew proguardJar
gradle proguardJar或./gradlew proguardJar&
buildJar 这部分相对比较简单,很多内容网上都有教程。关键在于混淆,由于团队每个人都有自己的安装习惯,JDK、Android SDK 路径不一定一致,并不能直接写死 runtime 的路径,最后直接看 Android Plugin 源码才写出了 proguardJar task。
至于想更多个性化的朋友,建议从源码入手。
可能感兴趣的话题
关于安卓频道
安卓频道分享Android开发文章,精选工具和安卓相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线&&国之画&&&&&&
版权所有 京ICP备号-2
迷上了代码!Android Studio使用新的Gradle构建工具配置NDK环境
从Android Studio 1.3 Beta1开始,就支持了NDK。不过使用的是一个全新的实验性的gradle构建工具。官方地址/tech-docs/new-build-system/gradle-experimental,英文好的可以直接看原文。在进行配置前请先将Android Studio更新至最新版本,目前最新版本是1.4 Bata4并且使用Android Studio内置的SDK管理器下载NDK。或者在项目上右键打开Project Structure,切到的SDK Location页进行安装注意这个NDK安装好后其目录在SDK目录下的ndk-bundle目录下,与以往的不同。要修改的文件见下图首先需要将根目录下的gradle修改为实验性的gradleclasspath 'com.android.tools.build:gradle-experimental:0.2.0'最终是这样的并且需要gradle 2.5的支持,将gradle/gradle-wrapper.properties中的版本修改为2.5distributionUrl=https/://services.gradle.org/distributions/gradle-2.5-all.zip最终是这样的然后修改原来的app/build.gradle,注意现在各项配置都是有等号的,并且使用的是com.android.model.application而不再是原来的com.android.application,如果是Library,则是com.android.model.library。然后android外围包了一层model。原来在android里面的buildTypes 移到了外面。等等,看下面内容,注意变化。apply plugin: 'com.android.model.application'model{
compileSdkVersion = 22
buildToolsVersion = "23.0.1"
defaultConfig.with {
applicationId = "com.kltz88.car.jnidemo"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 22
versionCode = 1
versionName = "1.0"
tasks.withType(JavaCompile) {
//指定编译JDK版本
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
android.ndk {
moduleName = "test"
ldLibs +="log"
abiFilters +="armeabi"
abiFilters +="armeabi-v7a"
abiFilters +="x86"
android.buildTypes {
minifyEnabled = false
proguardFiles += file( 'proguard-rules.pro')
}}dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'}在android.ndk中进行ndk的配置,模块名字是必须的。然后使用了log,并且支持armeabi,armeabi-v7a,x86三个平台。然后增加jni目录,在main上右键新建jni目录在弹出的窗口中你可以修改jni目录,默认是在main/jni中新建一个Test的类,加载jni库,声明native方法public class Test {
System.loadLibrary("test");
public native void test();}这时候你会发现test方法是红色的在上面按alt+enter生成c层的方法修改为下方的代码#include &jni.h&#include "android/log.h"JNIEXPORT void JNICALLJava_com_kltz88_car_jnidemo_Test_test(JNIEnv *env, jobject instance) {
__android_log_write(ANDROID_LOG_ERROR,"TAG","TEST");}如果你需要生成头文件,使用命令行即可之后会在jni目录生成对应的头文件然后在java层调用public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Test t=new Test();
}}便会看到日志的输出。注意如果没有在gradle中指定java的对应版本,运行时可能会报错tasks.withType(JavaCompile) {
//指定编译JDK版本
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}错误信息如下,遇到该错误加上上面的代码即可最后就是调试的问题了,理论上来说应该是支持调试的,但是我在windows上并没有试验成功。下面贴出步骤。增加native运行方法修改为然后下断点,理论上是能调试的,但是我遇到了下面的问题,导致无法继续,也查过了,查不出问题所在,就这样吧,改天在linux下试试是不是正常。你会发现整个流程下来,原来的Android.mk和Application.mk都不再需要了,所有配置在gradle中配置即可。官方的github示例代码 /googlesamples/android-ndk我的示例代码 http://download.csdn.net/detail/sbsujjbcy/9108775
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 android studio 的文章

 

随机推荐