有一个不在.gitmodule文件中的submodule在更新,解决办法就是
git ls-files --stage | grep 160000
这可以看到所有的Submodule文件,然后
git rm --cached PATH
有一个不在.gitmodule文件中的submodule在更新,解决办法就是
git ls-files --stage | grep 160000
这可以看到所有的Submodule文件,然后
git rm --cached PATH
Android开发中,不可避免的可能会引用到外部so文件,设置一个项目中可能需要引用多个不同的外部so文件。因为不同的引入库中so文件的目录可能不同,导致打包后生成的项目lib目录中的目录结构是不同的外部so文件目录的合集。可能会出现armeabi/armeabi-v7a/arm64-v8a/x86/mips等,一般情况下,armeabi应该是有的,当此三个目录下的文件可能不同时,在某些特定机型下很可能会出现UnsatisfiedLinkError。
原因在于不同的机型CPU结构不同导致搜寻不同的目录下面的包,而由于外部库不同的so文件目录可能armeabi下还有a、b so文件,而x86下可能只含有a。例如一个应用armeabi下有liba.so
、libb.so
,arm64-v8a下有liba.so
这样的应用装在arm64的设备上,当代码掉到加载libb.so时就会有上面的异常出现,即便是armeabi下有此so,系统也不会去寻找,原因是这个apk中已经有arm64的目录了。
此时解决方案如下:
在build.gradle中添加如下内容
android {
defaultConfig {
ndk {
abiFilters 'armeabi'
}
}
}
这样生成的apk中就只包含armeabi下的so文件,而不包含其他架构的目录,这样系统会采取兼容模式,加载armeabi下的so文件。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
}
}
apply plugin: 'com.android.application'
allprojects {
repositories {
}
}
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
}
repositories{
flatDir {
dirs 'libs'
}
}
android {
compileSdkVersion 23
buildToolsVersion "24.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
一、 在github上下载工具 https://github.com/getfatday/keytool-importkeypair 将工具在Linux环境下解压或者解压后Copy到Linux下,运行如下命令
keytool-importkeypair -k android/debug.keystore -p android -pk8 android/platform.pk8 -cert android/platform.x509.pem -alias androiddebugkey
二、 1 把pk8转换成pk12格式
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
2 生成pk12的密钥问文件
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name androiddebugkey
3 生成keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey
所有需要传递或接收的 Activity 不允许设置singleInstance,或只能设为标准模式,否则在部分手机上系统将在 startActivityForResult()后直接返回Activity.RESULT_CANCELED,但在某些手机是正常的。
1.proxychains-ng安装
1 | git clone https://github.com/rofl0r/proxychains-ng.git |
2.proxychains-ng配置
1 | sudo vim /etc/proxychains.conf |
3.proxychains-ng使用
1 | proxy wget http://www.baidu.com |
示例脚本
1 | apply plugin: 'com.android.application' |
操作系统:ubuntu 14.04
一.安装需要工具
1 | sudo apt-get install autoconf libtool libsysfs-dev |
二.制作交叉编译工具链
1.下载NDK,并配置NDK环境变量为NDK的安装路径
2.根据NDK里docs文档里的standalone-toolchain.html来抽取交叉编译的环境。
3.配置SYSROOT环境变量:
1 | SYSROOT=$NDK/platforms/android-19/arch-arm //android-19是你的android开发版本所定 |
4.然后运行命令:
1 | $NDK/build/tools/make-standalone-toolchain.sh --platform=android-19 --install-dir=/tmp/my-android-toolchain |
/tmp/my-android-toolchain是你交叉编译环境的复制路径。最好别放在tmp目录里,因为重启机子就立即消失了。这个新生成的文件 夹即是你的交叉编译环境
5.配置PAHT和CC环境变量:
1 | export PATH=/tmp/my-android-toolchain/bin:$PATH |
三.下载curl并编译
1 | git clone https://github.com/curl/curl.git |
在模块的build.gradle中填入以下内容
1 | task javadoc(type: Javadoc) { |
下面还有一个可能更好使
1 | android.libraryVariants.all { variant -> |
安装dconf-editor,并运行
1 | sudo apt-get install dconf-editor |
勾选org->gnome->nautilus->preferences->"always-use-location-entry"