当我在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
为TextView
S和其他部件.我在哪里可以存储长文本?如果我需要存储大型用户指南并进行本地化,该怎么办?
<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