android 编译,gradle
unable to find method AndroidJavaCompile.setDependencyCacheDir
此时怀疑有可能是Gradle版本问题,查看该程序的Gradle版本为:
classpath 'com.android.tools.build:gradle:2.1.3'
查看本机发现并不包含此版本的Gradle,因此将其修改为本机已经下载的Gradle版本:
classpath 'com.android.tools.build:gradle:2.3.2'
关于使用android studio时的一些错误整理 good
设置jcenter的地方
dqxu:经测试,能自动下载下来一些东西
在Android平台上加载本地库的危险性
安卓Application.mk文件的属性说明和基本写法
说一下Application.mk
- APP_PLATFORM = android-8
- APP_ABI := armeabi-v7a
- APP_STL := stlport_static
- APP_OPTIM := debug
关于android NDK开发中application.mk文件的疑惑
Android NDK中对STL的两种支持gnustl和stlport有什么区别
APP_STL
Android NDK从r5b版本开始有官方支持的STL了,有一个crystax版本早已经支持。官方的支持有两个版本一个是gnu的,一个是stlport。如果你需要在你的NDK程序中使用STL,那么需要在Application.mk文件中添加一个选项,就是APP_STL := stlport_static。 其中APP_STL的取值有以下四种: system -- 系统默认的最小支持的C++运行时库 stlport_static -- 以静态链接的方式使用stlport版本的STL stlport_shared -- 以动态链接的方式使用stlport版本的STL gnustl_static -- 以静态链接的方式使用gnu版本的STL如果你和我一样并没有使用Android.mk和Application.mk,而是使用Code::Blocks或者Visual studio 2010,那么在配置环境时,如果需要STL的支持,那么就需要注意自己要指定stl的包含路径。链接就根据需要自己链接不同的版本。请注意,stlport有静态链接和动态链接两种方式,而gnu的仅有静态链接方法。另外一个需要注意的就是官方提供的这个stlport版本不支持RTTI和异常,换言之,如果你使用了stlport版本的STL,则不能使用-fexceptions和-frtti这两个编译选项。
Java.lang.UnsatisfiedLinkError: couldn't find "libstlport_shared.so
maven {
url "https://s3.amazonaws.com/repo.commonsware.com"
}
}
dqxu:找不到文件
Write below line into dependencies {} block.
compile 'com.commonsware.cwac:sqlcipher-for-android:3.3.1'
Android NDK中C++ STL库动态和静态链接
Android Crash: couldn't find "xxx.so" 原因
其实应该就是jniLibs文件夹下面的so库加载出错了,由于项目比较宽泛,jniLibs只有armeabi这样一个文件夹,并没有armeabi-v7a,arm64-v8a, x86, x86_64, mips, mips64这几个文件夹,因为所有的x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的.so文件,所以理论上只需要在armeabi文件夹中放置所有的.so文件就可以了。
在一个设备上安装应用后,只有该设备支持的CPU架构对应的文件夹中的.so文件才会被安装和加载。例如,在arm64设备上,jniLibs/arm64-v8a/目录中如果存在.so文件的话,就会被安装,如果不存在.so文件的花,就会选择armeabi-v7a中的.so文件,如果该文件夹下也不存在的话,就会选择默认的.so文件,也就是armeabi文件夹下的.so文件。
知道原因了也就知道怎么解决了:
- 要么在每个文件夹下都编译对应CPU架构的.so文件(不能简单的把armeabi目录中的文件拷贝到对应的文件夹中,否则会出现
java.lang.UnsatisfiedLinkError: dlopen failed: "libxxx.so" is 32-bit instead of 64-bit
的异常); - 上面的做法比较痛苦,不同的CPU都要编译一遍,如果这个库没有开源也没有对其他平台做支持的话,那就只能呵呵了,所以建议采用如下做法:
a) 在项目中添加gradle.properties
文件,写入:
b) 在android.useDeprecatedNdk=true
build.gradle
中加入如下代码:defaultConfig { ndk { // 加了其他的文件夹(比如 armeabi-v7a,x86等)可能会出问题 abiFilters "armeabi" } }
dalvik.system.PathClassLoader[DexPathList[[zip file
解决办法:
将jinLibs或者libs下的arm64-v8a,arm-64等删除,留下armeabi和armeabi_v7a
ndk {
abiFilters “armeabi”, “armeabi-v7a”
}
如下加入:
defaultConfig {
applicationId “com..”
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName “1.0”
multiDexEnabled true
ndk {
abiFilters “armeabi”, “armeabi-v7a”
}
}
加入后 如果出现
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
则在项目根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
就行
Plugin is too old,please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment
访问 https://jcenter.bintray.com/com/android/tools/build/gradle/ 查看最新的版本号
Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE
在我的电脑-->高级设置--->环境变量--->系统变量新建变量
ANDROID_DAILY_OVERRIDE
bcad82779eeae871fd8ac883cfc424c96752ef64
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
在Android Studio中添加jcenter远程库
repositories {
mavenCentral()
// jcenter()
}
Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
good
下载地址:
https://jcenter.bintray.com/com/android/tools/build/gradle-core/2.4.0-alpha7/
替换地址:
D:\android-studio-ide\gradle\m2repository\com\android\tools\build\gradle-core\2.4.0-alpha7
D:\android-studio-ide\gradle\m2repository\com\android\tools\build\gradle\2.4.0-alpha7
D:\android-studio-ide\gradle\m2repository\com\android\tools\build\builder\2.4.0-alpha7
D:\android-studio-ide\gradle\m2repository\com\android\tools\lint\lint\25.4.0-alpha7
D:\android-studio-ide\gradle\m2repository\com\android\tools\external\com-intellij\uast\171.3780.107
D:\android-studio-ide\gradle\m2repository\com\android\tools\build\gradle-api\2.4.0-alpha7