当我在Android L(Nexus 5)上运行本机代码时,我收到错误.
错误:仅支持位置独立可执行文件(PIE).
在我的三星Galaxy S3(Android 4.3)上正确执行相同的代码.
这是我的Application.mk
APP_PROJECT_PATH := $(call my-dir)/..
APP_ABI := armeabi
NDK_TOOLCHAIN_VERSION := 4.7
APP_PLATFORM := android-9
APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
Run Code Online (Sandbox Code Playgroud)
但是,当我替换APP_PLATFORM := android-9为APP_PLATFORM := android-16(正如我在这里阅读,PIE支持出现在Jelly Been(API级别16)),相同的可执行文件在Android L上正常工作.
有没有办法APP_PLATFORM := android-9在Android L上使用并运行它来编译本机代码?
我需要从两个Web服务器请求数据.任务是独立的; 因此,我使用的是aync.parallel.现在我只在我的网页正文中写'abc','xyz'和'Done'.
由于任务是同时执行的,我可以遇到奇怪的输出吗?例如,
xab
cyz
Run Code Online (Sandbox Code Playgroud)
代码.
var async = require('async');
function onRequest(req, res) {
res.writeHead(200, {
"Content-Type" : "text/plain"
});
async.parallel([ function(callback) {
res.write('a');
res.write('b');
res.write('c\n');
callback();
}, function(callback) {
res.write('x');
res.write('y');
res.write('z\n');
callback();
} ], function done(err, results) {
if (err) {
throw err;
}
res.end("\nDone!");
});
}
var server = require('http').createServer(onRequest);
server.listen(9000);
Run Code Online (Sandbox Code Playgroud) 我正在使用VpnService为Android实现一个简单的防火墙.我的应用程序类似于ToyVpnService,但它不会将原始IP数据包发送到远程VPN服务器,而远程VPN服务器会将它们转发到目的地.
我的实现在这里:https://bitbucket.org/MaksimDmitriev/norootfirewall/src/006f7c33cd1cd4055f372ed3a88664fe2a4be3dd/src/com/norootfw/NoRootFwService.java?at=unix
我可以在本地完成所有这些转发程序吗?这就是我想要实现的.
我初始化一个TUN设备及其文件描述符:
mInterface = new Builder().setSession(getString(R.string.app_name))
.addAddress("10.0.2.1", 24)
.addRoute("0.0.0.0", 1)
.addRoute("128.0.0.0", 1)
.establish();
in = new FileInputStream(mInterface.getFileDescriptor());
out = new FileOutputStream(mInterface.getFileDescriptor());
Run Code Online (Sandbox Code Playgroud)
我将0.0.0.0/1和128.0.0.0/1分配给TUN设备,使其比0.0.0.0/0的默认路由更优先.我使用了0.0.0.0/0并遇到了同样的异常,如下所示.
这是一个示例UDP请求.
1).我从TUN设备读取了一个IP数据包.
05-06 00:46:52.749: D/UDPChecksum(31077): Sent == [69, 0, 0, 36, 0, 0, 64, 0, 64, 17, 108, 91, 10, 0, 2, 1, -64, -88, 1, -59, -53, 1, -50, -87, 0, 16, 89, -114, 85, 68, 80, 95, 68, 65, 84, 65]
Run Code Online (Sandbox Code Playgroud)
我正在阅读CLRS第三版中的 Dijkstra算法(第662页).这是我不明白的书中的一部分:
如果图形足够稀疏 - 特别是
E = o(V^2/lg V)- 我们可以通过使用二进制最小堆实现最小优先级队列来改进算法.
图为什么要稀疏?
这是另一部分:
每个DECREASE-KEY操作都需要时间
O(log V),并且最多仍然有E这样的操作.
假设我的图形如下所示:
我想计算从1到6的最短路径并使用最小堆方法.首先,我将所有节点添加到最小优先级队列.构建最小堆后,min节点是源节点(因为它与自身的距离为0).我提取它并更新其所有邻居的距离.
然后我需要调用decreaseKey距离最小的节点来创建一个新的最小堆.但是如何在恒定时间内知道它的指数呢?
节点
private static class Node implements Comparable<Node> {
final int key;
int distance = Integer.MAX_VALUE;
Node prev = null;
public Node(int key) {
this.key = key;
}
@Override
public int compareTo(Node o) {
if (distance < o.distance) {
return -1;
} else if (distance > o.distance) {
return 1;
} else {
return 0;
}
}
@Override …Run Code Online (Sandbox Code Playgroud) 从数据库插入,查询,更新和删除项目时,我必须提供同步.据我所知beginTransaction(),这beginTransactionNonExclusive()是我需要的方法.
除了SQLite的文档描述EXCLUSIVE,IMMEDIATE以及DEFERRED相当不错.
交易可以是延期交货,即时交易或独家交易.延迟意味着在首次访问数据库之前,不会在数据库上获取锁.
如果事务是立即的,则只要执行BEGIN命令就会在所有数据库上获取RESERVED锁,而无需等待数据库的使用.在BEGIN IMMEDIATE之后,没有其他数据库连接可以写入数据库或执行BEGIN IMMEDIATE或BEGIN EXCLUSIVE.但是,其他进程可以继续从数据库中读取.
独占事务导致在所有数据库上获取EXCLUSIVE锁.在BEGIN EXCLUSIVE之后,除了read_uncommitted连接之外,没有其他数据库连接能够读取数据库,没有异常的其他连接将无法写入数据库,直到事务完成.
当某些线程正在使用数据库时,它似乎提供了一些保护,防止不必要的插入和查询.但我不确定它是否能保证同步.
有insert我的方法ContentProvider.
@Override
public Uri insert(Uri baseUri, ContentValues values) {
try {
mDatabase = mHelper.getWritableDatabase();
mDatabase.beginTransaction(); // EXCLUSIVE
switch (sUriMatcher.match(baseUri)) {
case UriCodes.COUNTRIES:
case UriCodes.CONTINENTS:
case UriCodes.ORGS:
String table = baseUri.getLastPathSegment();
long rowId = mDatabase.insert(table, null, values);
Uri uri = Uri.withAppendedPath(baseUri, Long.toString(rowId));
mDatabase.setTransactionSuccessful();
return uri;
default:
mDatabase.endTransaction();
throw new IllegalArgumentException(UNSUPPORTED_URI + SPACE + baseUri);
} …Run Code Online (Sandbox Code Playgroud) 我刚刚在使用Android 7.1.1和Android支持库25.3.1的Nexus 9上观察到以下行为.
这是我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="false"
android:orientation="vertical"
android:paddingBottom="4dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#fffaaa" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#bbbaaa" />
<View
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="#f00" />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
这就是它在屏幕上的样子:
当屏幕键盘显示时,系统调整活动的布局大小,从而占用从屏幕顶部到键盘的空间.请在下面的屏幕截图中考虑红色虚线:
但是,当我ScrollView用a 替换时NestedScrollView,系统不会调整布局大小:
现在红色虚线位于键盘下方.通过申请android:windowSoftInputMode="adjustResize"活动可以轻松解决该问题:
红色虚线现在位于键盘上方.我的问题是:
NestedScrollView?android scrollview android-support-library android-nestedscrollview
我的机器有8 GB的RAM.我安装了Android Studio 1.1.0并应用了他们在这里发布的所有内容.
一个小的Hello world应用程序一切正常.但是当我开始编辑build.gradle我们从Eclipse移动的大项目时,IDE会挂起20或30秒.即使我不添加或删除任何行,它也会挂起.即使我只按Enter键.此外,我没有看到底部正在运行任何进程(索引,同步等).
我查了一下File -> Settings -> Gradle,并且Use auto-import未经检查.
正如他们所建议的那样,我在https://code.google.com/p/android/issues/detail?id=82706#c35上运行jstack -l <pid> > dump.txt并发布了一条消息dump.txt
我不能在dump.txt这里附上相同的内容,因为它包含大约800行.
我想确保在我的 Android 应用程序(Java 和 Kotlin 代码中)中不会调用特定类的特定方法。假设,我有一个使用Bar以下两种方法调用的类:allowed()和disallowed()。这是代码:
package com;
public class Bar {
public void disallowed() {
}
public void allowed() {
}
}
Run Code Online (Sandbox Code Playgroud)
并假设客户端代码可以调用allowed()并且不应该调用disallowed(). 我发现Google的内置AddJavascriptInterfaceDetector的源代码与我的情况类似。
这是我的 lint 规则的代码:
样本代码检测器
package com.sample.mobile.lint
import com.android.tools.lint.detector.api.Category
import com.android.tools.lint.detector.api.Detector
import com.android.tools.lint.detector.api.Implementation
import com.android.tools.lint.detector.api.Issue
import com.android.tools.lint.detector.api.JavaContext
import com.android.tools.lint.detector.api.Scope
import com.android.tools.lint.detector.api.Severity
import com.android.tools.lint.detector.api.SourceCodeScanner
import com.intellij.psi.PsiMethod
import org.jetbrains.uast.UCallExpression
class SampleCodeDetector : Detector(), SourceCodeScanner {
companion object {
@JvmField
val ISSUE = Issue.create(
// ID: used …Run Code Online (Sandbox Code Playgroud) 如何将ActionBar保留在原位?看截图.活动标签是半隐藏的.

我平时在使用短消息strings.xml为TextViewS和其他部件.我在哪里可以存储长文本?如果我需要存储大型用户指南并进行本地化,该怎么办?
<string name="instruction_will_be_soon">Lorem Ipsum ist ein einfacher Demo-Text für die Print- und Schriftindustrie. Lorem Ipsum ist in der Industrie bereits der Standard Demo-Text seit 1500, als ein unbekannter Schriftsteller eine Hand voll Wörter nahm und diese durcheinander warf um ein Musterbuch zu erstellen. Es hat nicht nur 5 Jahrhunderte überlebt, sondern auch in Spruch in die elektronische Schriftbearbeitung geschafft (bemerke, nahezu unverändert). Bekannt wurde es 1960, mit dem erscheinen von "Letraset", welches Passagen von Lorem Ipsum …Run Code Online (Sandbox Code Playgroud) android ×7
android-ndk ×1
dijkstra ×1
firewall ×1
hang ×1
heap ×1
java ×1
javascript ×1
keyboard ×1
kotlin ×1
lint ×1
localization ×1
min-heap ×1
networking ×1
node.js ×1
scrollview ×1
sockets ×1
sqlite ×1
string ×1
textview ×1
transactions ×1
udp ×1