我试图调试我的Android应用程序的发布版本,但Android Studio无法附加调试器.(它找不到我正在运行的应用程序的Android procces).
在设备控制台下,只有一条消息:
没有可调试的应用程序
我有一个简单的应用程序,可以访问和写入外部存储的数据.一切正常,直到我进入设置 - >应用程序 - >应用程序信息并通过"清除数据"按钮清除数据,然后每次调用getExternalCacheDir()开始返回null.
我一直在开发运行Android 4.2.2的Nexus 7.
我的清单看起来像:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package"
android:versionCode="5"
android:versionName="1.3"
xmlns:tools="http://schemas.android.com/tools">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
...
Run Code Online (Sandbox Code Playgroud)
不起作用的代码段:
Log.d(TAG, "getExternalStorageState() = " + Environment.getExternalStorageState());
Log.d(TAG, "getExternalCacheDir() = " + c.getExternalCacheDir());
Log.d(TAG, "getExternalFilesDir(null) = " + c.getExternalFilesDir(null));
Log.d(TAG, "getExternalFilesDir(Environment.DIRECTORY_MOVIES) = " + c.getExternalFilesDir(Environment.DIRECTORY_MOVIES));
Run Code Online (Sandbox Code Playgroud)
安装并执行应用程序后的LogCat:
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalStorageState() = mounted
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalCacheDir() = /storage/emulated/0/Android/data/com.example.package/cache
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalFilesDir(null) = /storage/emulated/0/Android/data/com.example.package/files
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalFilesDir(Environment.DIRECTORY_MOVIES) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我现有的Web应用程序生成java客户端库,但每次选择"生成云端点客户端库"时,eclipse会显示进度对话框并冻结.
是否有可用于生成客户端库的命令行工具(类似bin/endpoints.sh)?
提前致谢.
编辑 感谢Dan,我设法使用以下命令生成客户端库:
$SDK/endpoints.sh get-client-lib com.test.MyEndpoint
google-app-engine google-cloud-endpoints google-plugin-eclipse
我想TableLayout通过ViewStab元素扩展我的一些额外的行.这是我Activity的布局:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root_table_layout">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Row 1"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Row 2"/>
</TableRow>
<ViewStub
android:id="@+id/view_stub_1"
android:layout="@layout/merge_table_1"/>
<ViewStub
android:id="@+id/view_stub_2"
android:layout="@layout/merge_table_2"/>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)
任何一个view_stub_1或被view_stub_2充气Activity onCreate(这取决于应用程序的条件).
ViewStub应该用<merge>标签作为根元素来扩展定义的布局.像这样:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Row 5"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Row 6"/>
</TableRow>
</merge>
Run Code Online (Sandbox Code Playgroud)
但是当Activity即将开始时,我得到了这个例外:
merge只能与有效的ViewGroup根和attachToRoot = true一起使用 - 与getLayoutInflater一起使用
我有一个改变行与行之间空间的TextView习惯:TextAppearance
<style name="CustomAppearance">
<item name="android:lineSpacingExtra">30sp</item>
</style>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lorem ipsum lorem ipsum lorem ipsum lorem ipsum..."
android:textAppearance="@style/CustomAppearance" />
Run Code Online (Sandbox Code Playgroud)
问题是lineSpacingExtra应用程序启动时该值被忽略。(虽然如果我使用CustomAppearancethroughstyle而不是textAppearance属性,它会起作用)