小编Viv*_*rde的帖子

减少Android应用程序(apk)的大小

我现在将在Google Play商店发布我的第一个应用程序.我已经压缩了我的应用程序中使用的图像.我对应用程序的大小有一些疑问.

如果应用程序的大小小于2 MB,那么用户卸载应用程序的可能性就会降低,对于属于教育领域的应用程序,我的这种说法是否属实?

但是,当我在Windows中看到我的apk文件时,它显示3.10 MB但是当它从设备中安装时从应用信息中显示它显示:

Total............................8.68 MB
App..............................7.02 MB
USB storage app..................0.00 B
Data.............................1.66 MB (perhaps it is the size of sqlite db + ttf's)
SD card..........................0.00B
Run Code Online (Sandbox Code Playgroud)

那么,为什么我看到我的应用程序大小增加了很多,它可以最小化吗?

而且,我在我的项目中使用了4个库(jars)Android Private Libraries,但是这些库也在这个文件夹之外.

删除它们是否更安全,删除它们有助于减少apk大小?

此外,我访问了许多网页,描述了什么Proguard,我真正理解Proguard如何减小apk的大小,它通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆我们的代码.结果是较小的.apk文件,更难以进行逆向工程.但我不知道proguard-project.txt 应该怎么样?
我使用4个图书馆在我的应用程序,即easyfacebookandroidsdk_2.3.jar,android-support-v7-appcompat.jar,google-play-services.jarandroid-support-v4.jar.

目前我proguard-properties.txt看起来像这样,也不使用WebView

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here. …
Run Code Online (Sandbox Code Playgroud)

java android jar proguard apk

39
推荐指数
1
解决办法
3万
查看次数

如何获取Android设备的核心数量

我想确定(或计算)Android设备的嵌入式处理器中的核心数量.

我尝试使用/proc/cpuinfo,但它没有返回设备的核心数量!

我没有在互联网上的任何地方找到代码.这里有谁知道我怎么能确定这个,那么请回答.提前致谢

更新:

关于这个问题的答案如何从代码中检测Android设备上的双核cpu?某些设备运行不佳.我测试的是双核和四核处理器,它们分别返回2和4,很好!

但是,在像三星Note 3这样的Octa Core处理器上,它返回了4.(也许在注3中有2套四核处理器单独运行)

我本来想解决这个问题.

UPDATE

应用程序CPU-Z在我的设备Samsung note 3中返回正确的核心数 在此输入图像描述 这似乎存在一种可能的解决方案......

android

34
推荐指数
4
解决办法
2万
查看次数

Eclipse不生成MainActivity.java和activity_main.xml

在创建新的Android应用程序项目时,MainActivity.java应在src文件夹中自动生成其包名称,并activity_main.xml应在布局文件夹中创建.但它并没有被创造出来.

在此输入图像描述

并且在清单中它也不会产生这个POC

 <activity
        android:name="info.androidhive.slidingmenu.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

但是,我手动添加了所有这些东西.

  • activity_main.xml然后显示此错误

     Eclipse is loading framework information and the layout library from the SDK folder.
     activity_main.xml will refresh automatically once the process is finished.
    
    Run Code Online (Sandbox Code Playgroud)
  • MainActivity.java无法识别布局字段 setContentView(R.layout.activity_main)

昨天我从SDK Manager下载了更新这些工具的安装/更新在此输入图像描述 在此输入图像描述

我尝试清理项目,更改工作区,重新启动日食和窗口,但它没有帮助:(

java eclipse windows android android-sdk-tools

19
推荐指数
2
解决办法
3万
查看次数

Facebook应用程序的包名和类名

在我的Android应用程序中制作Facebook应用程序以实现共享功能时,我想问一个小小的混乱在此输入图像描述

用于打开应用的唯一应用标识符

  1. 包名称: 在我们的开发者控制台上创建新的Facebook应用程序时,我写的是唯一标识符吗?或者它是我的Android应用程序的包名称?

您希望Facebook启动的主要活动

  1. 类名:我在每个片段(类)中添加了一个facebook分享按钮,那么哪个类是它想要facebook启动的主要活动?或者它是我的Android应用程序的主要活动?

android facebook facebook-graph-api facebook-android-sdk socialshare

13
推荐指数
2
解决办法
3万
查看次数

无法将Appcompat主题从光更改为全黑

我试图完全改变我的应用程序的主题,这是我修改和尝试的:

styles.xml 在values文件夹中

<resources>

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

</resources>
Run Code Online (Sandbox Code Playgroud)

值-V11 styles.xml

<resources>

<!--
    Base application theme …
Run Code Online (Sandbox Code Playgroud)

java android android-appcompat android-theme android-actionbaractivity

12
推荐指数
1
解决办法
2万
查看次数

如何在ListView Adapter类中实现2种不同类型的分隔符(即标题)

我通过这组代码调用适配器:

mAdapter = new MyCustomAdapter(getActivity());

mAdapter.addSeparatorItem(new ContentWrapper(q.get(0).getA_name(),null));
mAdapter.addItem(new ContentWrapper(q.get(0).getAS_name(), q.get(0).getDesc_art()));
Run Code Online (Sandbox Code Playgroud)

考虑以下代码:

private class MyCustomAdapter extends BaseAdapter {

private static final int TYPE_ITEM = 0;
private static final int TYPE_SEPARATOR = 1;
private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;

private ArrayList<ContentWrapper> mData = new ArrayList<ContentWrapper>();
private LayoutInflater mInflater;

private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();

public MyCustomAdapter(Context context)
{
    mInflater = LayoutInflater.from(context); 
}

public void addItem(ContentWrapper value) {
    mData.add(value);
    notifyDataSetChanged();
}

public void addSeparatorItem(ContentWrapper value) {
    mData.add(value);
    // save separator …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

11
推荐指数
1
解决办法
654
查看次数

如何启动Vuforia AR sample App android?

我正在关注Vuforia并且我已经运行了样本,它工作正常,但如果我想启动我们自己的应用程序,那么你能帮助我如何启动应用程序.

谢谢.

android augmented-reality vuforia

8
推荐指数
1
解决办法
2226
查看次数

从图像序列javacv创建视频

为了从android中的图像序列创建视频,我使用了javacv 0.6库,但我遇到了问题:它通常适用于htc Sensation(Android 4.0.1,处理器类型armv7)和htc Desire(Android 2.3.3,处理器类型arm7)手机,但它不适用于htc Wildfire(Android 2.3.5,处理器类型armv6)手机,特别是它在这部分代码中失败了

FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(videoFilePath,       
TalkingPhotoConstants.VIDEO_FRAME_WIDTH,TalkingPhotoConstants.VIDEO_FRAME_HEIGHT);
Run Code Online (Sandbox Code Playgroud)

在附加的代码中.

public class MovieCreator extends AsyncTask<String, Void, Boolean> {

private opencv_core.IplImage[] iplimage;
private String audioFilePath;


private ProgressDialog progressDialog;
private Context context;
private List<TalkFrame> frames;

public MovieCreator(Context context, opencv_core.IplImage[] images, String audioFilePath,           
List<TalkFrame> frames) {
    this.context = context;
    this.iplimage = images;
    this.audioFilePath = audioFilePath;
    this.frames = frames;

}

private String createMovie() {

    String videoName = TalkingPhotoConstants.TMP_VIDEO_NAME;
    String path = TalkingPhotoConstants.RESOURCES_TMP_FOLDER;
    String videoFilePath = path + videoName;
    String …
Run Code Online (Sandbox Code Playgroud)

android ffmpeg javacv

8
推荐指数
1
解决办法
2065
查看次数

无法实例化以下类: - com.google.android.gms.plus.PlusOneButton

我正在按照本教程https://developers.google.com/+/mobile/android/recommend在我的应用中集成+1按钮.

一旦我将此代码放入xml中,我就会在GraphicalLayout中出现错误

<com.google.android.gms.plus.PlusOneButton
xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"
android:id="@+id/plus_one_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
plus:size="standard"
plus:annotation="inline" />
Run Code Online (Sandbox Code Playgroud)

我也试过放入xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus"父RelativeLayout,但同样的错误.

The following classes could not be instantiated:
- com.google.android.gms.plus.PlusOneButton (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.


java.lang.NullPointerException
at com.google.android.gms.plus.PlusOneDummyView$zzb.isValid(    at com.google.android.gms.plus.PlusOneDummyView.zzrJ(    at com.google.android.gms.plus.PlusOneDummyView.<init>(    at com.google.android.gms.plus.internal.zzg.zza(    at com.google.android.gms.plus.PlusOneButton.zzN(    at com.google.android.gms.plus.PlusOneButton.<init>(    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(    at sun.reflect.NativeConstructorAccessorImpl.newInstance(    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(    at java.lang.reflect.Constructor.newInstance(    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:438)
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:190)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
Run Code Online (Sandbox Code Playgroud)

救命 …

android android-layout android-xml google-plus-one google-play-services

8
推荐指数
1
解决办法
1914
查看次数

在单个Activity中将Google Map v2重用于多个片段

我的一个活动是切换包含谷歌地图的片段.

起初我尝试使用fragment的子片段mananger(ChildFragmentManager)来添加SupportMapFragment.它工作正常,但是每个片段都会再次加载map,这需要花费很多时间.

我无法SupportMapFragment从一个片段分离并将其附加到另一个片段,因为它以某种方式与ViewGroup它首先放置的位置相关联.

所以最后我决定使用MapView在活动中创建的普通对象并将其添加到活动片段的视图组中,并在放入另一个片段的视图组之前将其删除.

一切正常,除了OK onSaveInstanceState(MapView的需要手动通过调用所有活动的生命周期方法,如onResume,onPause,onDestroy,onSaveInstanceState).当我尝试调用mapView.onSaveInstanceState我的活动时,它会破坏应用程序.

我想知道是否还有其他人成功地将GoogleMap重用于多个片段?

android android-mapview android-maps-v2

7
推荐指数
1
解决办法
905
查看次数