Articles of Android

从Linux启动Android上的持续后台进程

说我有一个简单的可执行的Linux程序,无限期地在一个循环中运行,直到它被明确杀死。 我希望能够以这样的方式部署它,即使从我的Android设备上断开USB电缆,它也能继续运行。 当我尝试像这样运行程序时, $adb shell <android_shell>$ /path/to/dir/myprog & 我能够断开电源线,当我连接它并做一个 $ps | grep myprog 我仍然可以看到它正在运行。 但是,当我尝试以这种方式运行时, $adb shell /path/to/dir/myprog & 当我断开电源线的那一刻,这个过程就被终止了,我不能再用ps来find它了。 1)这两种执行命令的方式有什么不同? 2)有没有办法从桌面terminal运行命令来达到我想要做的?

在Linux上下载Android Studio Debian – 下载无法启动

我试图在Debian上下载Android Studio(版本8.4“jessie”),但下载甚至没有启动。 我正在使用此页面: http://developer.android.com/sdk/index.html 所有这一切发生的是,我得到一个popup窗口,显示约1-2秒,说:“现在下载Android SDK工具!因为你select只下载Android SDK工具(而不是Android Studio),没有有关如何使SDK工具保持最新状态的信息,请参阅SDK Manager指南。 这就是我得到的…没有下载。

Gradle离线如何caching依赖关系

我正在做一个晚上gradle在服务器上build立一个服务器,从git检查仓库并构build它们。但是,有一个代理,gradle无法下载任何仓库。 我尝试运行gradlew离线模式,然后我得到一个错误告诉我 “没有caching版本”,然后是依赖项的名称。 这显然是因为我从来没有下载依赖关系,我正在考虑手动下载依赖caching它们,并在构build可以访问它的服务器上使用这个gradlecaching。 我的问题如下: 有什么办法可以手动下载.jar文件或.pom文件,然后caching它们? 我如何将一个jar文件caching在$ Home / .gradle / caches目录中? 我试着把它放在那里,但它不工作。 有任何想法吗?

在内核中杀死一个进程

我正在研究一个研究项目,它试图在内核中find一些exception/恶意的状态/input,并立即停止内核线程的进一步执行。 例如,一个进程发出一个带有恶意参数的系统调用,并且它的内核线程执行它。 在函数Foo()的中间,我们使用一个探测器来发现参数是恶意的。 而函数没有返回值( void )。 现在我们需要杀死这个进程及其相应的内核部分,并释放它使用的资源(锁等)。 如何在Linux / Android内核中实现它? 我目前的想法是暂停(调用schedule()让它睡觉)线程永远,并试图杀死进程。 但是,“kill”信号只能在进程处于用户空间的时候才能生效,为时已晚。

Kmsg时间戳在未来是500ms

我试图跟踪系统何时醒来并暂停(理想情况下,monotonic_time开始和停止),以便我可以准确地将单调时间戳与实时时钟相关联。 在android上,第一个想到的方法是监视kmsg中的唤醒消息,并使用其时间戳作为相当准确的标记。 由于我不确定这个时间戳的准确性,我决定logging当前的单调时间。 以下代码在独立可执行文件中运行 while(true) { fgets(mLineBuffer, sizeof(mLineBuffer), mKmsgFile); //Find first space char * messageContent = strchr(mLineBuffer,' '); //Offset one to get character after space messageContent++; if (strncmp (messageContent,"Enabling non-boot CPUs …",25) == 0 ) { clock_gettime(CLOCK_MONOTONIC,&mMono); std::cout << mLineBuffer; std::cout << std::to_string(mMono.tv_sec) << "." << std::to_string(mMono.tv_nsec) << "\n"; } } 我期望clock_gettime返回的时间是在kmsg日志时间戳之后的某个时间点,而是在600ms之前到200ms之后的任何时间。 <6>[226692.217017] Enabling non-boot […]

构buildAndroid Rom时造成错误(ABC Rom – 基于PureNexus,基于AOSP)

早餐后,做mka熏肉时,我得到这个build设错误[装置]。 我也试过使用clobber清理出来,所以它是新鲜的,但我仍然得到这个错误。 我曾尝试从LunaOS / external / busybox / scripts / basic / fixdep.c中删除行“#include”,但是仍然无法解决这个问题。 构build日志可以在这里find – http://pastebin.com/dNXfs91K 有想法该怎么解决这个吗? 我在Linux Mint 17.3上,人们已经确认我的环境设置正确 – 即遵循相同的教程,input正确的命令下载构build工具等。 提前致谢。

ADB服务器没有确认,已经绑定到tcp:5037(kill&restart之后)

我一直在我的arch-linux安装上设置android-studio。 我是新来的android开发,所以这是一个探索性的过程。 我遇到的问题是我无法运行AVD仿真器。 看着stdout上的日志,我得到错误: [ 37311] WARN – #com.android.ddmlib – error: could not install *smartsocket* listener: Address already in use [ 37339] WARN – #com.android.ddmlib – '/home/parma/Android/Sdk/platform-tools/adb start-server' failed — run manually if necessary [ 37341] WARN – #com.android.ddmlib – ADB server didn't ACK [ 37341] WARN – #com.android.ddmlib – * failed to start daemon […]

针对Android x86的交叉编译Perl

我喜欢交叉编译Android x86模拟器的Perl。 但是,我在运行configuration…的基础上得到了一个PIE(位置独立可执行文件)错误。 眼镜: NDK版本14 Perl 5.22.1。 使用AOSP构build的x86 Android模拟器 – Android 7.1.1 我设置了以下variables: export ANDROID_NDK=/home/fabian/Android/Sdk/ndk-bundle export TARGET_ARCH=x86 export ANDROID_TOOLCHAIN=/tmp/toolchain-x86 export SYSROOT=$ANDROID_TOOLCHAIN/sysroot export TARGETDIR=/data/local/perl export GCC=i686-linux-android-gcc export PATH=$PATH:$ANDROID_NDK/toolchains/x86-4.9/prebuilt/linux-x86_64/bin 然后我使用以下命令构build工具链: $ANDROID_NDK/build/tools/make-standalone-toolchain.sh –platform=android-23 –install-dir=$ANDROID_TOOLCHAIN –toolchain=x86-4.9 并得到这个(正确的?)输出: HOST_OS=linux HOST_EXE= HOST_ARCH=x86_64 HOST_TAG=linux-x86_64 HOST_NUM_CPUS=4 BUILD_NUM_CPUS=8 Auto-config: –arch=x86 Toolchain installed to /tmp/toolchain-x86. 然后我启动./Configure命令: ./Configure -des -Dusedevel -Dusecrosscompile -Dtargetrun=adb -Dcc=i686-linux-android-gcc -Dsysroot=$SYSROOT -Dtargetdir=$TARGETDIR -Dtargethost=emulator-5554 […]

对禁用服务的请求:sns_main.c

在Android设备中启动摄像头时,我发现请求在日志中禁用了服务:sns_main.c 。 我是一名Linux开发人员。 我在哪里可以find哪个传感器在本机端被禁用。

printk命令需要多长时间?

我使用printk在内核级别输出中断时间戳,意思是每个中断一次printk(在irg_handler_方法中)。 在使用新的内核时,我注意到我的设备运行速度较慢。 所以我的问题是每个printk命令要执行多长时间? 任何其他更轻的命令,我可以用于输出/debugging目的? 谢谢,